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); }
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); }
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); }
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); }