Example #1
0
        private IEnumerable <string> Property(ScreenSectionEntityFormFields entityFormFieldEntity, IEnumerable <ScreenSectionEntityFormFields> effes, string requestObjectName = "request", string existingObjectName = "", int level = 0, bool add = false)
        {
            var properties = new List <string>();

            foreach (var group in entityFormFieldEntity.FormFields.GroupBy(ff => ff.EntityPropertyId))
            {
                var formField = group.First();
                switch (formField.PropertyType)
                {
                case PropertyType.PrimaryKey:
                case PropertyType.ParentRelationshipOneToOne:
                    // Ignore
                    break;

                case PropertyType.ParentRelationshipOneToMany:
                case PropertyType.ReferenceRelationship:
                    properties.Add($"            {new string(' ', 4 * level)}updates.Add(update.Set(p => p.{existingObjectName}{formField.InternalNameCSharp}, {requestObjectName}.{formField.InternalNameCSharp}));");
                    break;

                default:
                    properties.Add($"            {new string(' ', 4 * level)}updates.Add(update.Set(p => p.{existingObjectName}{formField.InternalNameCSharp}, {requestObjectName}.{formField.InternalNameCSharp}));");
                    break;
                }
            }

            if (entityFormFieldEntity.ChildEntities != null)
            {
                foreach (var childEntityFormFieldEntity in entityFormFieldEntity.ChildEntities)
                {
                    var childProperties         = new List <string>();
                    var childObjectName         = $"{requestObjectName}.{childEntityFormFieldEntity.InternalName}";
                    var childExistingObjectName = $"{(string.IsNullOrEmpty(existingObjectName) ? "" : $"{existingObjectName}.")}{childEntityFormFieldEntity.InternalName}.";
Example #2
0
        private IEnumerable <string> GetPropertiesRecursive(ScreenSectionEntityFormFields entityFormFieldEntity, IEnumerable <ScreenSectionEntityFormFields> effes, string objectName = "item", int level = 0)
        {
            var properties = new List <string>();

            foreach (var group in entityFormFieldEntity.FormFields.GroupBy(ff => ff.EntityPropertyId))
            {
                var formField = group.First();
                switch (formField.PropertyType)
                {
                case PropertyType.ReferenceRelationship:

                    properties.Add($"                            {new string(' ', 4 * level)}{formField.InternalNameCSharp} = {objectName}.{formField.InternalNameCSharp}");

                    // TODO: Title should be configurable
                    // TODO: is it faster to do the bool check on the key instead of object?
                    // TODO: needs to work for all levels
                    if (level == 0)
                    {
                        properties.Add($"                            {new string(' ', 4 * level)}{formField.InternalNameAlternateCSharp} = {objectName}.{formField.Property.InternalName} != null ? {objectName}.{formField.Property.InternalName}.Title : null");
                    }

                    break;

                case PropertyType.ParentRelationshipOneToOne:
                    // TODO
                    break;

                default:
                    properties.Add($"                            {new string(' ', 4 * level)}{formField.InternalNameCSharp} = {objectName}.{formField.InternalNameCSharp}");
                    break;
                }
            }

            if (entityFormFieldEntity.ChildEntities != null)
            {
                foreach (var childEntityFormFieldEntity in entityFormFieldEntity.ChildEntities)
                {
                    var childProperties = new List <string>();
                    var childObjectName = $"{objectName}.{childEntityFormFieldEntity.InternalName}";
                    foreach (var effe in effes)
                    {
                        if (effe.Entity.Id == childEntityFormFieldEntity.Id)
                        {
                            childProperties.AddRange(GetPropertiesRecursive(effe, effes, childObjectName, level + 1));
                        }
                    }

                    var parentPropertyInternalName = (from p in childEntityFormFieldEntity.Properties
                                                      where p.PropertyType == PropertyType.ParentRelationshipOneToOne
                                                      select p).Single().InternalName;

                    properties.Add($@"                            {new string(' ', 4 * level)}{childEntityFormFieldEntity.InternalName} = {childObjectName} == null || !{childObjectName}.{parentPropertyInternalName}Id.HasValue ? null : new {childEntityFormFieldEntity.InternalName}Response{{
{string.Join(string.Concat(",", Environment.NewLine),  childProperties)}
                            {new string(' ', 4 * level)}}}");
                }
            }

            return(properties);
        }
        private IEnumerable <string> Property(ScreenSectionEntityFormFields entityFormFieldEntity, IEnumerable <ScreenSectionEntityFormFields> effes, string requestObjectName = "put", string existingObjectName = "existingRecord", int level = 0, bool add = false)
        {
            var properties = new List <string>();

            foreach (var group in entityFormFieldEntity.FormFields.GroupBy(ff => ff.EntityPropertyId))
            {
                var formField = group.First();
                switch (formField.PropertyType)
                {
                case PropertyType.PrimaryKey:
                case PropertyType.ParentRelationshipOneToOne:
                    // Ignore
                    break;

                default:
                    properties.Add($"            {new string(' ', 4 * level)}{existingObjectName}.{formField.InternalNameCSharp} = {requestObjectName}.{formField.InternalNameCSharp};");
                    break;
                }
            }

            if (entityFormFieldEntity.ChildEntities != null)
            {
                foreach (var childEntityFormFieldEntity in entityFormFieldEntity.ChildEntities)
                {
                    var childProperties         = new List <string>();
                    var childObjectName         = $"{requestObjectName}.{childEntityFormFieldEntity.InternalName}";
                    var childExistingObjectName = $"{existingObjectName}.{childEntityFormFieldEntity.InternalName}";
                    foreach (var effe in effes)
                    {
                        if (effe.Entity.Id == childEntityFormFieldEntity.Id)
                        {
                            childProperties.AddRange(Property(effe, effes, childObjectName, childExistingObjectName, level + 1));
                        }
                    }

                    var parentPropertyInternalName = (from p in childEntityFormFieldEntity.Properties
                                                      where p.PropertyType == PropertyType.ParentRelationshipOneToOne
                                                      select p).Single().InternalName;
                    if (add)
                    {
                        properties.Add($@"            if ({childObjectName} != null)
            {{
                {existingObjectName}.{childEntityFormFieldEntity.InternalName} = new {childEntityFormFieldEntity.InternalName}();
{string.Join(Environment.NewLine, childProperties)}
            }}");
                    }
                    else
                    {
                        properties.Add($@"            if ({childObjectName} == null)
            {{
                {existingObjectName}.{childEntityFormFieldEntity.InternalName} = null;
            }}
            else
            {{
                if ({existingObjectName}.{childEntityFormFieldEntity.InternalName} == null || !{existingObjectName}.{childEntityFormFieldEntity.InternalName}.{parentPropertyInternalName}Id.HasValue)
                {{
                    {existingObjectName}.{childEntityFormFieldEntity.InternalName} = new {childEntityFormFieldEntity.InternalName}();
                }}
{string.Join(Environment.NewLine, childProperties)}
            }}");
                    }
                }
            }
            return(properties);
        }