private static IEnumerable<Field> TemplateFields(FieldCollection templateFields, TemplateModel model)
{
foreach (FieldElement fieldElement in templateFields)
{
String key = fieldElement.Key;
Field field = null;
switch (fieldElement.Type)
{
case FieldType.Standard:
StandardField standardField = new StandardField();
standardField.Value = model.GetField(key, FieldAttribute.Value, fieldElement.Value.Value);
field = standardField;
break;
case FieldType.Date:
DateField dateField = new DateField();
if (fieldElement.DateStyle != FieldDateTimeStyle.Unspecified)
dateField.DateStyle = fieldElement.DateStyle;
if (fieldElement.TimeStyle != FieldDateTimeStyle.Unspecified)
dateField.TimeStyle = fieldElement.TimeStyle;
if (fieldElement.IgnoresTimeZone.HasValue)
dateField.IgnoresTimeZone = fieldElement.IgnoresTimeZone.Value;
if (fieldElement.IsRelative.HasValue)
dateField.IsRelative = fieldElement.IsRelative.Value;
DateTime dateValue;
if (!DateTime.TryParse(fieldElement.Value.Value, out dateValue))
dateValue = DateTime.MinValue;
dateField.Value = model.GetField<DateTime>(key, FieldAttribute.Value, dateValue);
field = dateField;
break;
case FieldType.Number:
NumberField numberField = new NumberField();
if (fieldElement.NumberStyle != FieldNumberStyle.Unspecified)
numberField.NumberStyle = fieldElement.NumberStyle;
numberField.CurrencyCode = model.GetField(key, FieldAttribute.CurrencyCode, fieldElement.CurrencyCode.Value);
Decimal decimalValue;
if (!Decimal.TryParse(fieldElement.Value.Value, out decimalValue))
decimalValue = 0;
numberField.Value = model.GetField<Decimal>(key, FieldAttribute.Value, decimalValue);
field = numberField;
break;
}
field.Key = fieldElement.Key;
field.DataDetectorTypes = fieldElement.DataDetectorTypes;
if (field.TextAlignment != FieldTextAlignment.Unspecified)
field.TextAlignment = fieldElement.TextAlignment;
field.Label = model.GetField(key, FieldAttribute.Label, fieldElement.Label.Value);
field.AttributedValue = model.GetField(key, FieldAttribute.AttributedValue, fieldElement.AttributedValue.Value);
field.ChangeMessage = model.GetField(key, FieldAttribute.ChangeMessage, fieldElement.ChangeMessage.Value);
yield return field;
}
}