public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IDictionary <string, IEnumerable <ModuleImportDeclaration> > importGroups, List <IdentityField> identityFields, string loginTitleTranslationKey, string loginButtonTranslationKey) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject); var resourcesHandler = generatorConfiguration.ResourcesHandler; IEnumerable <ModuleImportDeclaration> importDeclarations; Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // Login page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("IdentityFields", identityFields); sessionVariables.Add("PageName", pageName); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.Add("LoginTitleTranslationKey", loginTitleTranslationKey); sessionVariables.Add("LoginButtonTranslationKey", loginButtonTranslationKey); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <LoginPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Page")); // Login class sessionVariables = new Dictionary <string, object>(); importDeclarations = importGroups["Page"]; moduleAssemblyProperties.Imports = importDeclarations.Exclude(pageName + "Page"); sessionVariables.Add("IdentityFields", identityFields); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <LoginClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Page Class")); // Validator class sessionVariables = new Dictionary <string, object>(); importDeclarations = importGroups["Validator"]; moduleAssemblyProperties.Clear(); moduleAssemblyProperties.Imports = importDeclarations.Exclude(pageName + "Validator"); sessionVariables.Add("FormFields", identityFields.Cast <FormField>().ToList()); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + "-validator.ts"); fileInfo = new FileInfo(filePath); output = host.Generate <ValidatorClassTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Login Validator Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, IModuleAssembly angularModule, List <ManagedList> managedLists, List <GridColumn> gridColumns, bool isComponent) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); var parentElement = (IParentBase)baseObject; var childElement = parentElement.ChildElements.Single(); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // grid page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); sessionVariables.Add("EntityName", childElement.Name); sessionVariables.Add("IsComponent", isComponent); fileLocation = PathCombine(pagesFolderPath, childElement.Name.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <NavigationGridPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Navigation Grid Page")); // grid class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.Add("EntityName", childElement.Name); sessionVariables.Add("ParentEntityName", parentElement.Name); sessionVariables.Add("IsComponent", isComponent); if (baseObject is IRelationProperty) { var navigationProperty = (IRelationProperty)baseObject; var thisPropertyRef = navigationProperty.ThisPropertyRef; var parentPropertyRef = navigationProperty.ParentPropertyRef; var thisPropertyType = thisPropertyRef.GetScriptTypeName(); var thisShortType = thisPropertyRef.GetShortType().ToLower(); switch (navigationProperty.ThisMultiplicity) { case "*": sessionVariables.Add("EntityParentRefName", baseObject.Parent.Name); sessionVariables.Add("EntityPropertyRefName", thisPropertyRef.Name); break; case "0..1": case "1": DebugUtils.Break(); break; default: DebugUtils.Break(); break; } } sessionVariables.Add("ManagedLists", managedLists); sessionVariables.Add("GridColumns", gridColumns); if (generatorConfiguration.CustomQueries.ContainsKey(baseObject)) { var queriesList = generatorConfiguration.CustomQueries[baseObject]; sessionVariables.Add("CustomQueries", queriesList); } sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <NavigationGridClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Navigation Grid Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public static void GenerateModel(IBase baseObject, string modelsFolderPath, string modelName, IGeneratorConfiguration generatorConfiguration, IEnumerable <ModuleImportDeclaration> imports, List <FormField> formFields) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); var newModules = new List <ESModule>(); var isIdentityEntity = generatorConfiguration.IsIdentityEntity(baseObject); List <ESModule> modules = null; Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // Client Model class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("FormFields", formFields); sessionVariables.Add("ModelName", modelName); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.Add("IsIdentityEntity", isIdentityEntity); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); fileLocation = modelsFolderPath; filePath = Path.Combine(fileLocation, modelName.ToLower() + ".model.ts"); fileInfo = new FileInfo(filePath); output = host.Generate <ClientModelClassTemplate>(sessionVariables, false); if (generatorConfiguration.KeyValuePairs.ContainsKey("Modules")) { modules = (List <ESModule>)generatorConfiguration.KeyValuePairs["Modules"]; } else { modules = new List <ESModule>(); generatorConfiguration.KeyValuePairs.Add("Modules", modules); } foreach (var module in moduleAssemblyProperties.Modules) { module.BaseObject = baseObject; if (!modules.Contains(module)) { modules.Add(module); } newModules.Add(module); } generatorConfiguration.CreateFile(fileInfo, newModules.Cast <Module>(), output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Client Model Class")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, List <object> inputObjects) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // $basename$ page sessionVariables = new Dictionary <string, object>(); // TODO - change this and the input variable inputObjects, preferably typed, to match your needs sessionVariables.Add("Input", inputObjects); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <$basename$PageTemplate> (sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "$basename$ Page")); // $basename$ class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("Input", inputObjects); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <$basename$ClassTemplate> (sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "$basename$ Page Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.Engine.WriteError(e.ToString()); } }
public static void GeneratePage(IBase baseObject, string pagesFolderPath, string pageName, IGeneratorConfiguration generatorConfiguration, IModuleAssembly module, IEnumerable <ModuleImportDeclaration> imports, View view, RazorSemanticVisitor visitor) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // repeater page sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("RazorSemanticVisitor", visitor); sessionVariables.Add("View", view); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".html"); fileInfo = new FileInfo(filePath); output = host.Generate <RepeaterPageTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Repeater Page")); // repeater class sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("RazorSemanticVisitor", visitor); sessionVariables.Add("PageName", pageName); sessionVariables.Add("Authorize", generatorConfiguration.AuthorizedRoles); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".ts"); fileInfo = new FileInfo(filePath); output = host.Generate <RepeaterClassTemplate>(sessionVariables, false); module.ExportedComponents = sessionVariables.GetExportedComponents(); module.ForChildFile = generatorConfiguration.CreateFile(moduleAssemblyProperties, fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Repeater Page Class")); // sass sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("PageName", pageName); fileLocation = PathCombine(pagesFolderPath, pageName.ToLower()); filePath = PathCombine(fileLocation, pageName.ToLower() + ".scss"); fileInfo = new FileInfo(filePath); output = host.Generate <SassStyleSheetTemplate>(sessionVariables, false); generatorConfiguration.CreateFile(fileInfo, output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "page \r\n{\r\n}")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }
public static void AddModuleAssemblyProperties(this Dictionary <string, object> sessionVariables, AngularModuleAssemblyProperties moduleAssemblyProperties) { sessionVariables.Add("Imports", moduleAssemblyProperties.Imports); sessionVariables.Add("Exports", moduleAssemblyProperties.Exports); sessionVariables.Add("Declarations", moduleAssemblyProperties.Declarations); sessionVariables.Add("Providers", moduleAssemblyProperties.Providers); sessionVariables.Add("Modules", moduleAssemblyProperties.Modules); }
public static void GenerateProvider(IBase baseObject, string providersFolderPath, string providerName, IGeneratorConfiguration generatorConfiguration, IEnumerable <ModuleImportDeclaration> imports, List <RelatedEntity> relatedEntities) { var host = new TemplateEngineHost(); var pass = generatorConfiguration.CurrentPass; var moduleAssemblyProperties = new AngularModuleAssemblyProperties(baseObject, imports); var newProviders = new List <Provider>(); var isIdentityEntity = generatorConfiguration.IsIdentityEntity(baseObject); List <Provider> providers = null; Dictionary <string, object> sessionVariables; FileInfo fileInfo; string fileLocation; string filePath; string output; try { // Entity provider sessionVariables = new Dictionary <string, object>(); sessionVariables.Add("ProviderName", providerName); sessionVariables.Add("EntityName", baseObject.Name); sessionVariables.Add("RelatedEntities", relatedEntities); sessionVariables.Add("IsIdentityEntity", isIdentityEntity); sessionVariables.AddModuleAssemblyProperties(moduleAssemblyProperties); if (isIdentityEntity) { var className = providerName + "Provider"; sessionVariables.Add("ClientId", generatorConfiguration.ClientId); sessionVariables.Add("ClientSecret", generatorConfiguration.ClientSecret); generatorConfiguration.IdentityProvider = className; } if (generatorConfiguration.CustomQueries.ContainsKey(baseObject)) { var queriesList = generatorConfiguration.CustomQueries[baseObject]; sessionVariables.Add("CustomQueries", queriesList); } else if (generatorConfiguration.CustomQueries.ContainsNavigationKey(baseObject)) { var queriesList = generatorConfiguration.CustomQueries.GetNavigationValue(baseObject); sessionVariables.Add("CustomQueries", queriesList); } fileLocation = providersFolderPath; filePath = PathCombine(fileLocation, providerName.ToLower() + ".provider.ts"); fileInfo = new FileInfo(filePath); output = host.Generate <EntityProviderClassTemplate>(sessionVariables, false); if (generatorConfiguration.KeyValuePairs.ContainsKey("Providers")) { providers = (List <Provider>)generatorConfiguration.KeyValuePairs["Providers"]; } else { providers = new List <Provider>(); generatorConfiguration.KeyValuePairs.Add("Providers", providers); } foreach (var provider in moduleAssemblyProperties.Providers) { provider.BaseObject = baseObject; if (!providers.Contains(provider)) { providers.Add(provider); } newProviders.Add(provider); } generatorConfiguration.CreateFile(fileInfo, newProviders.Cast <Module>(), output, FileKind.Project, () => generatorConfiguration.GenerateInfo(sessionVariables, "Entity Provider Class")); } catch (Exception e) { generatorConfiguration.AppGeneratorEngine.WriteError(e.ToString()); } }