/// <summary> /// Gets the reference display field definition. /// </summary> /// <param name="displayField">The display field.</param> /// <param name="pathToField">The path to field.</param> /// <returns>System.String.</returns> private string GetReferenceDisplayFieldDefinition(ReferenceDisplayFieldDefinition displayField, string pathToField) { var sb = new StringBuilder(); sb.AppendFormat( @" {0} = new Cebos.Veyron.SharedTypes.ReferenceDisplayFieldDefinition {{ Name = {1}, SystemName = {2}, Order = {3}, ColumnType = Cebos.Veyron.SharedTypes.ColumnTypes.{4}, Alias = {5}, CanView = false, ShowOnSearch = {6}, ShowOnDetails = {7}, ShowLatestVersion = {8}, AllowLocalizedData = Cebos.Veyron.SharedTypes.Localization.LocalizationUtils.IsLocalizable({9}, {2}) }}; ", pathToField, displayField.Name.ToLiteral(), displayField.SystemName.ToLiteral(), displayField.Order, displayField.ColumnType, displayField.Alias.ToLiteral(), displayField.ShowOnSearch.ToLiteral(), displayField.ShowOnDetails.ToLiteral(), displayField.ShowLatestVersion.ToLiteral(), displayField.DefinedIn.SystemName.ToLiteral()); if (displayField.NumericType.HasValue) sb.AppendFormat( @" {0}.NumericType = Cebos.Veyron.SharedTypes.NumericTypes.{1}; {0}.NumberOfDigits = {2}; ", pathToField, displayField.NumericType.Value, displayField.NumberOfDigits); var guid = string.Format("v_{0}", Guid.NewGuid().ToString().Replace("-", "_")); if (displayField.DateTimeFormat.HasValue) { var varFormatName = string.Format("{0}Format", guid); var varDateFormatName = string.Format("{0}DateTimeFormat", guid); sb.AppendFormat(@" //Get DateTime settings from source property. var {2} = new ReferenceFieldsHelper().GetDateTimeFormat({0}, {1}); var {3} = (Cebos.Veyron.SharedTypes.DateTimeFormat) Enum.Parse(typeof (Cebos.Veyron.SharedTypes.DateTimeFormat), {2}, true); {4}.DateTimeFormat = {3}; ", displayField.DefinedIn.SystemName.ToLiteral(), //0 displayField.SystemName.ToLiteral(), //1 varFormatName, //2 varDateFormatName, //3 pathToField); //4 } if (displayField.ColumnType == ColumnTypes.Boolean) { var varCheckboxName = string.Format("{0}Checkbox", guid); sb.AppendFormat(@" // Get checkbox settings from source property. var {2} = new ReferenceFieldsHelper().GetCheckboxSettings({0}, {1}); {3}.UndefinedLabel = {2}.UndefinedLabel; {3}.TrueLabel = {2}.TrueLabel; {3}.FalseLabel = {2}.FalseLabel; ", displayField.DefinedIn.SystemName.ToLiteral(), //0 displayField.SystemName.ToLiteral(), //1 varCheckboxName, //2 pathToField); //3 } sb.AppendFormat(@" {{ var _rcrType = typeof(Dynamic{1}.{1}Info); var prop = _rcrType.GetProperty({2}); if (prop != null) {{ var richAttr = (from d in prop.GetCustomAttributes(typeof({3}), false) select d).FirstOrDefault(); if (richAttr != null) {{ {0}.IsRichText = true; }} }} }} ", pathToField, displayField.DefinedIn.SystemName, displayField.SystemName.ToLiteral(), typeof(RichTextAttribute).Name); sb.Append(GetReferenceProcessDefinition(displayField.DefinedIn, pathToField + ".DefinedIn")); sb.Append(GetReferenceProcessDefinition(displayField.ReferencedProcess, pathToField + ".ReferencedProcess")); sb.Append(GetReferenceJoinFieldDefinition(displayField.ReferenceField, pathToField + ".ReferenceField")); if (displayField.JoinFields.Any()) { var joinFieldName = string.Format(@"j_{0}", Guid.NewGuid().ToString().Replace('-', '_')); sb.AppendFormat( @" Cebos.Veyron.SharedTypes.ReferenceJoinFieldDefinition {0} = null; ", joinFieldName); foreach (var joinField in displayField.JoinFields) { sb.Append(GetReferenceJoinFieldDefinition(joinField, joinFieldName)); sb.AppendFormat(@" {0}.JoinFields.Add({1});", pathToField, joinFieldName); } } if (displayField.Subfields.Any()) { var subfieldName = string.Format(@"s_{0}", Guid.NewGuid().ToString().Replace('-', '_')); sb.AppendFormat( @" Cebos.Veyron.SharedTypes.ReferenceDisplayFieldDefinition {0} = null; ", subfieldName); foreach (var subfield in displayField.Subfields) { sb.Append(GetReferenceDisplayFieldDefinition(subfield, subfieldName)); sb.AppendFormat(@" {0}.Subfields.Add({1}); ", pathToField, subfieldName); } } return sb.ToString(); }
/// <summary> /// Gets the reference display field definition. /// </summary> /// <param name="displayField">The display field.</param> /// <param name="pathToField">The path to field.</param> /// <returns>System.String.</returns> private string GetReferenceDisplayFieldDefinition(ReferenceDisplayFieldDefinition displayField, string pathToField) { var sb = new StringBuilder(); sb.AppendFormat( @" {0} = new ReferenceDisplayFieldDefinition {{ Name = {1}, SystemName = {2}, Order = {3}, ColumnType = ColumnTypes.{4}, Alias = {5}, CanView = false, ShowOnSearch = {6}, ShowOnDetails = {7} }}; ", pathToField, displayField.Name.ToLiteral(), displayField.SystemName.ToLiteral(), displayField.Order, displayField.ColumnType.ToString(), displayField.Alias.ToLiteral(), displayField.ShowOnSearch.ToLiteral(), displayField.ShowOnDetails.ToLiteral()); if (displayField.NumericType.HasValue) sb.AppendFormat( @" {0}.NumericType = NumericTypes.{1}; {0}.NumberOfDigits = {2}; ", pathToField, displayField.NumericType.Value, displayField.NumberOfDigits); if (displayField.DateTimeFormat.HasValue) sb.AppendFormat(@" {0}.DateTimeFormat = DateTimeFormat.{1}; ", pathToField, displayField.DateTimeFormat.Value); sb.Append(GetReferenceProcessDefinition(displayField.DefinedIn, pathToField + ".DefinedIn")); sb.Append(GetReferenceProcessDefinition(displayField.ReferencedProcess, pathToField + ".ReferencedProcess")); sb.Append(GetReferenceJoinFieldDefinition(displayField.ReferenceField, pathToField + ".ReferenceField")); if (displayField.JoinFields.Any()) { var joinFieldName = string.Format(@"j_{0}", Guid.NewGuid().ToString().Replace('-', '_')); sb.AppendFormat( @" ReferenceJoinFieldDefinition {0} = null; ", joinFieldName); foreach (var joinField in displayField.JoinFields) { sb.Append(GetReferenceJoinFieldDefinition(joinField, joinFieldName)); sb.AppendFormat(@" {0}.JoinFields.Add({1});", pathToField, joinFieldName); } } if (displayField.Subfields.Any()) { var subfieldName = string.Format(@"s_{0}", Guid.NewGuid().ToString().Replace('-', '_')); sb.AppendFormat( @" ReferenceDisplayFieldDefinition {0} = null; ", subfieldName); foreach (var subfield in displayField.Subfields) { sb.Append(GetReferenceDisplayFieldDefinition(subfield, subfieldName)); sb.AppendFormat(@" {0}.Subfields.Add({1}); ", pathToField, subfieldName); } } return sb.ToString(); }