Example #1
0
        private Models.GeneratedItem CreateProperties(string separator)
        {
            var properties       = new List <string>();
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var result           = new Models.GeneratedItem(Common.UnitType.General, Common.ItemType.Properties)
            {
                FullName      = $"Properties",
                FileExtension = ".csv",
            };
            var menuItem = new MenuItem()
            {
                Text  = "Home",
                Value = "home",
                Path  = "/",
                Icon  = "home",
                Order = 1,
            };
            var types = contractsProject.PersistenceTypes
                        .Union(contractsProject.BusinessTypes)
                        .Union(contractsProject.ModuleTypes)
                        .Union(contractsProject.ShadowTypes);

            result.SubFilePath = $"{result.FullName}{result.FileExtension}";
            result.Add($"AppName{separator}ComponentName{separator}MemberName{separator}MemberInfo{separator}Value");
            result.Add($"{SolutionProperties.SolutionName}{separator}NavMenu{separator}Home{separator}{separator}{JsonSerializer.Serialize<MenuItem>(menuItem)}");

            result.AddRange(CreateTypeProperties(separator, types));
            result.Source.AddRange(properties.Distinct());
            return(result);
        }
        private IEnumerable <string> CreateSetMethode()
        {
            var first            = true;
            var result           = new List <string>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            #region Generate DbSet<E> Set<I, E>()
            result.Add("public override DbSet<E> Set<I, E>()");
            result.Add("{");
            result.Add("DbSet<E> result = null;");

            foreach (var type in contractsProject.PersistenceTypes)
            {
                string entityName    = CreateEntityNameFromInterface(type);
                string entityNameSet = $"{entityName}Set";

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = {entityNameSet} as DbSet<E>;");
                result.Add("}");
                first = false;
            }
            result.Add("return result;");
            result.Add("}");
            #endregion Generate DbSet<E> Set<I, E>()
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateBusinessControllers()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.BusinessTypes)
            {
                if (CanCreate(nameof(CreateBusinessControllers), type))
                {
                    result.Add(CreateBusinessController(type));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateEnums()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.EnumTypes)
            {
                if (CanCreate(type))
                {
                    result.Add(CreateEnum(type));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateShadowModels()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.ShadowTypes)
            {
                if (CanCreate(type))
                {
                    result.Add(CreateModelFromContract(type, UnitType, Common.ItemType.ShadowModel));
                    result.Add(CreateShadowModel(type, UnitType));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateModulesContracts()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var types            = contractsProject.ModuleTypes;

            foreach (var type in types)
            {
                if (CanCreate(type))
                {
                    result.Add(CreateContract(type, types));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateBusinessEntities()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.BusinessTypes)
            {
                if (CanCreateEntity(type))
                {
                    result.Add(CreateEntityFromContract(type, Common.ItemType.BusinessEntity));
                    result.Add(CreateBusinessEntity(type));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreatePersistenceModels()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.PersistenceTypes)
            {
                if (CanCreate(type))
                {
                    result.Add(CreateModelFromContract(type, UnitType, Common.ItemType.PersistenceModel));
                    result.Add(CreatePersistenceModel(type, UnitType));
                    //result.Add(CreateOverrideToString(type, UnitType));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateWebApiControllers()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var types            = contractsProject.PersistenceTypes
                                   .Union(contractsProject.ShadowTypes)
                                   .Union(contractsProject.BusinessTypes);

            foreach (var type in types)
            {
                if (CanCreate(nameof(CreateWebApiControllers), type))
                {
                    result.Add(CreateWebApiController(type));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreatePersistenceEntities()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var persistenceTypes = contractsProject.PersistenceTypes;

            foreach (var type in persistenceTypes)
            {
                if (CanCreateEntity(type))
                {
                    result.Add(CreateEntityFromContract(type, Common.ItemType.PersistenceEntity));
                    result.Add(CreatePersistenceEntity(type));
                    result.Add(CreateEntityToEntityFromContracts(type, persistenceTypes));
                }
            }
            return(result);
        }
        public IEnumerable <Contracts.IGeneratedItem> CreateBusinessModels()
        {
            var result           = new List <Contracts.IGeneratedItem>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            foreach (var type in contractsProject.BusinessTypes)
            {
                if (CanCreate(type))
                {
                    result.Add(CreateModelFromContract(type, UnitType, Common.ItemType.BusinessModel));
                    if (ContractHelper.HasOneToMany(type))
                    {
                        var(one, _) = ContractHelper.GetOneToManyTypes(type);

                        result.Add(CreateDelegateProperties(type, one, StaticLiterals.OneModelName, UnitType, Common.ItemType.BusinessModel));
                    }
                    result.Add(CreateBusinessModel(type, UnitType));
                }
            }
            return(result);
        }
        private IEnumerable <string> CreateDoModelCreating()
        {
            var result           = new List <string>();
            var contractsProject = ContractsProject.Create(SolutionProperties);

            #region CanCreateDoModelCreating()
            if (CanCreateDoModelCreating())
            {
                result.Add("static partial void DoModelCreating(ModelBuilder modelBuilder)");
                result.Add("{");
                foreach (var type in contractsProject.PersistenceTypes.Where(t => CanEntityModelBuild(t)))
                {
                    var contractHelper = new Helpers.ContractHelper(type);
                    var builder        = $"{contractHelper.EntityFieldName}Builder";

                    result.Add($"var {builder} = modelBuilder.Entity<{contractHelper.EntityType}>();");
                    if (contractHelper.ContextType == CommonBase.Attributes.ContextType.View)
                    {
                        result.Add($"{builder}.ToView(\"{contractHelper.ContextName}\", \"{contractHelper.SchemaName}\");");
                        result.AddRange(CreateEntityConfigure(type));
                    }
                    else if (contractHelper.ContextType == CommonBase.Attributes.ContextType.Table)
                    {
                        result.Add($"{builder}.ToTable(\"{contractHelper.ContextName}\", \"{contractHelper.SchemaName}\")");
                        if (Helpers.ContractHelper.HasPersistenceBaseInterface(type) == false)
                        {
                            if (contractHelper.IsIdentifiable)
                            {
                                result.Add($".HasKey(\"{contractHelper.KeyName}\");");
                            }
                            if (contractHelper.IsVersionable)
                            {
                                result.Add($"modelBuilder.Entity<{contractHelper.EntityType}>().Property(p => p.RowVersion).IsRowVersion();");
                            }
                        }
                        else
                        {
                            result[^ 1] = $"{result[^1]};";
        private Models.GeneratedItem CreateDbContext(string nameSpace)
        {
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var result           = new Models.GeneratedItem(Common.UnitType.Logic, Common.ItemType.DbContext)
            {
                FullName      = $"{nameSpace}.{SolutionProperties.SolutionName}DbContext",
                FileExtension = StaticLiterals.CSharpFileExtension,
            };

            result.SubFilePath = $"{result.FullName}PartA{result.FileExtension}";
            result.Add($"namespace {nameSpace}");
            result.Add("{");
            result.Add("using Microsoft.EntityFrameworkCore;");
            result.Add("using Microsoft.EntityFrameworkCore.Metadata.Builders;");
            result.Add($"partial class {SolutionProperties.SolutionName}DbContext : GenericDbContext");
            result.Add("{");

            foreach (var type in contractsProject.PersistenceTypes)
            {
                string entityName    = CreateEntityNameFromInterface(type);
                string subNameSpace  = CreateSubNamespaceFromType(type);
                string entityNameSet = $"{entityName}Set";

                result.Add($"protected DbSet<Entities.{subNameSpace}.{entityName}> {entityNameSet}" + " { get; set; }");
            }

            result.AddRange(CreateSetMethode());
            result.AddRange(CreateDoModelCreating());

            result.Add("}");
            if (nameSpace.HasContent())
            {
                result.Add("}");
            }
            result.AddRange(result.Source.Eject().FormatCSharpCode());
            return(result);
        }
Example #14
0
        public Contracts.IGeneratedItem CreateLogicFactory()
        {
            var first            = true;
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var types            = contractsProject.PersistenceTypes
                                   .Union(contractsProject.ShadowTypes)
                                   .Union(contractsProject.BusinessTypes);
            var result = new Models.GeneratedItem(Common.UnitType.Logic, Common.ItemType.Factory)
            {
                FullName      = $"{LogicNameSpace}.Factory",
                FileExtension = StaticLiterals.CSharpFileExtension,
            };

            result.SubFilePath = $"{result.FullName}{result.FileExtension}";
            result.Add("public static partial class Factory");
            result.Add("{");
            result.Add("public static Contracts.Client.IControllerAccess<I> Create<I>() where I : Contracts.IIdentifiable");
            result.Add("{");
            result.Add("Contracts.Client.IControllerAccess<I> result;");
            foreach (var type in types.Where(t => CanCreateLogicAccess(t)))
            {
                var entityName          = CreateEntityNameFromInterface(type);
                var controllerNameSpace = $"Controllers.{CreateSubNamespaceFromType(type)}";

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new {controllerNameSpace}.{entityName}Controller(CreateContext()) as Contracts.Client.IControllerAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("else");
            result.Add("{");
            result.Add("throw new Logic.Modules.Exception.LogicException(Modules.Exception.ErrorType.InvalidControllerType);");
            result.Add("}");

            result.Add("return result;");
            result.Add("}");

            result.Add("public static Contracts.Client.IControllerAccess<I> Create<I>(object sharedController) where I : Contracts.IIdentifiable");
            result.Add("{");
            result.Add("Contracts.Client.IControllerAccess<I> result;");
            first = true;
            foreach (var type in types.Where(t => CanCreateLogicAccess(t)))
            {
                var entityName          = CreateEntityNameFromInterface(type);
                var controllerNameSpace = $"Controllers.{CreateSubNamespaceFromType(type)}";

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new {controllerNameSpace}.{entityName}Controller(sharedController as Controllers.ControllerObject) as Contracts.Client.IControllerAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("else");
            result.Add("{");
            result.Add("throw new Logic.Modules.Exception.LogicException(Modules.Exception.ErrorType.InvalidControllerType);");
            result.Add("}");

            result.Add("return result;");
            result.Add("}");

            result.Add("public static Contracts.Client.IControllerAccess<I> Create<I>(string sessionToken) where I : Contracts.IIdentifiable");
            result.Add("{");
            result.Add("Contracts.Client.IControllerAccess<I> result;");
            first = true;
            foreach (var type in types.Where(t => CanCreateLogicAccess(t)))
            {
                var entityName          = CreateEntityNameFromInterface(type);
                var controllerNameSpace = $"Controllers.{CreateSubNamespaceFromType(type)}";

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new {controllerNameSpace}.{entityName}Controller(CreateContext()) " + "{ SessionToken = sessionToken } as Contracts.Client.IControllerAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("else");
            result.Add("{");
            result.Add("throw new Logic.Modules.Exception.LogicException(Modules.Exception.ErrorType.InvalidControllerType);");
            result.Add("}");

            result.Add("return result;");
            result.Add("}");
            result.Add("}");

            result.AddRange(EnvelopeWithANamespace(result.Source.Eject(), LogicNameSpace));
            result.AddRange(result.Source.Eject().FormatCSharpCode());
            return(result);
        }
Example #15
0
        public Contracts.IGeneratedItem CreateAdapterFactory()
        {
            var first            = true;
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var types            = contractsProject.PersistenceTypes
                                   .Union(contractsProject.ShadowTypes)
                                   .Union(contractsProject.BusinessTypes);
            var result = new Models.GeneratedItem(Common.UnitType.Adapters, Common.ItemType.Factory)
            {
                FullName      = $"{AdapterNameSpace}.Factory",
                FileExtension = StaticLiterals.CSharpFileExtension,
            };

            result.SubFilePath = $"{result.FullName}{result.FileExtension}";
            result.Add("public static partial class Factory");
            result.Add("{");
            result.Add("public static Contracts.Client.IAdapterAccess<I> Create<I>()");
            result.Add("{");
            result.Add("Contracts.Client.IAdapterAccess<I> result = null;");
            result.Add("if (Adapter == AdapterType.Controller)");
            result.Add("{");
            foreach (var type in types.Where(t => CanCreateLogicAccess(t) && CanCreateAdapterAccess(t)))
            {
                var entityName          = CreateEntityNameFromInterface(type);
                var controllerNameSpace = CreateControllerNameSpace(type);

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new Controller.GenericControllerAdapter<{type.FullName}>() as Contracts.Client.IAdapterAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("}");
            result.Add("else if (Adapter == AdapterType.Service)");
            result.Add("{");

            first = true;
            foreach (var type in types.Where(t => CanCreateLogicAccess(t) && CanCreateAdapterAccess(t)))
            {
                var modelName      = CreateEntityNameFromInterface(type);
                var modelNameSpace = CreateTransferNameSpace(type);
                var extUri         = modelName.EndsWith("s") ? $"{modelName}" : $"{modelName}s";

                ConvertExtUri(type, ref extUri);
                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new Service.GenericServiceAdapter<{type.FullName}, {modelNameSpace}.{modelName}>(BaseUri, \"{extUri}\")");
                result.Add(" as Contracts.Client.IAdapterAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("}");
            result.Add("return result;");
            result.Add("}");

            result.Add("public static Contracts.Client.IAdapterAccess<I> Create<I>(string sessionToken)");
            result.Add("{");
            result.Add("Contracts.Client.IAdapterAccess<I> result = null;");
            result.Add("if (Adapter == AdapterType.Controller)");
            result.Add("{");

            first = true;
            foreach (var type in types.Where(t => CanCreateLogicAccess(t) && CanCreateAdapterAccess(t)))
            {
                var entityName          = CreateEntityNameFromInterface(type);
                var controllerNameSpace = CreateControllerNameSpace(type);

                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new Controller.GenericControllerAdapter<{type.FullName}>(sessionToken) as Contracts.Client.IAdapterAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("}");
            result.Add("else if (Adapter == AdapterType.Service)");
            result.Add("{");
            first = true;
            foreach (var type in types.Where(t => CanCreateLogicAccess(t) && CanCreateAdapterAccess(t)))
            {
                var modelName      = CreateEntityNameFromInterface(type);
                var modelNameSpace = CreateTransferNameSpace(type);
                var extUri         = modelName.EndsWith("s") ? $"{modelName}" : $"{modelName}s";

                ConvertExtUri(type, ref extUri);
                if (first)
                {
                    result.Add($"if (typeof(I) == typeof({type.FullName}))");
                }
                else
                {
                    result.Add($"else if (typeof(I) == typeof({type.FullName}))");
                }
                result.Add("{");
                result.Add($"result = new Service.GenericServiceAdapter<{type.FullName}, {modelNameSpace}.{modelName}>(sessionToken, BaseUri, \"{extUri}\") as Contracts.Client.IAdapterAccess<I>;");
                result.Add("}");
                first = false;
            }
            result.Add("}");
            result.Add("return result;");
            result.Add("}");

            result.Add("}");
            result.AddRange(EnvelopeWithANamespace(result.Source.Eject(), AdapterNameSpace));
            result.AddRange(result.Source.Eject().FormatCSharpCode());
            return(result);
        }
Example #16
0
        private Models.GeneratedItem CreateTranslations(string separator)
        {
            var translations     = new List <string>();
            var contractsProject = ContractsProject.Create(SolutionProperties);
            var result           = new Models.GeneratedItem(Common.UnitType.General, Common.ItemType.Translations)
            {
                FullName      = $"Translations",
                FileExtension = ".csv",
            };

            result.SubFilePath = $"{result.FullName}{result.FileExtension}";
            result.Add($"AppName{separator}KeyLanguage{separator}Key{separator}ValueLanguage{separator}Value");

            var key   = string.Empty;
            var types = contractsProject.PersistenceTypes
                        .Union(contractsProject.BusinessTypes)
                        .Union(contractsProject.ModuleTypes)
                        .Union(contractsProject.ShadowTypes);
            var properties = types.SelectMany(t => t.GetAllPropertyInfos())
                             .GroupBy(p => p.Name)
                             .Select(g => g.FirstOrDefault());

            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}NewRef{separator}De{separator}New");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}ViewRef{separator}De{separator}View");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}EditRef{separator}De{separator}Edit");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}DeleteRef{separator}De{separator}Delete");

            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}Reload{separator}De{separator}Reload");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}Cancel{separator}De{separator}Cancel");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}Confirm{separator}De{separator}Confirm");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}Submit{separator}De{separator}Submit");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}SubmitClose{separator}De{separator}SubmitClose");
            foreach (var item in types)
            {
                var entityName = CreateEntityNameFromInterface(item);

                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{entityName}MasterComponent.{separator}De{separator}");
                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{entityName}DetailsComponent.{separator}De{separator}");
            }

            foreach (var item in properties.OrderBy(p => p.Name))
            {
                key = $"{item.Name}";
                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}{separator}De{separator}{item.Name}");
            }

            key = "LoginMenu";
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Access-Authorization{separator}De{separator}Access-Authorization");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Identity-User{separator}De{separator}Identity-User");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Role-Management{separator}De{separator}Role-Management");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Change password{separator}De{separator}Change password");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Reset password{separator}De{separator}Reset password");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Translation{separator}De{separator}Translation");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Settings{separator}De{separator}Settings");
            translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.Logout{separator}De{separator}Logout");

            foreach (var type in types.OrderBy(t => t.Name))
            {
                var entityName = CreateEntityNameFromInterface(type);

                key = $"{entityName}";
                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.TitelDetails{separator}De{separator}TitelDetails");
                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.TitleEditModel{separator}De{separator}TitleEditModel");
                translations.Add($"{SolutionProperties.SolutionName}{separator}En{separator}{key}.TitleConfirmDelete{separator}De{separator}TitleConfirmDelete");
            }

            result.Source.AddRange(translations.Distinct());
            return(result);
        }