public static string GetCommandFileText(string classNamespace, Entity entity, string contextName, string solutionDirectory, string projectBaseName) { var className = Utilities.UpdateEntityFeatureClassName(entity.Name); var updateCommandName = Utilities.CommandUpdateName(entity.Name); var updateDto = Utilities.GetDtoName(entity.Name, Dto.Update); var manipulationValidator = Utilities.ValidatorNameGenerator(entity.Name, Validator.Manipulation); var primaryKeyPropType = entity.PrimaryKeyProperty.Type; var primaryKeyPropName = entity.PrimaryKeyProperty.Name; var entityNameLowercase = entity.Name.LowercaseFirstLetter(); var commandProp = $"{entity.Name}ToUpdate"; var updatedEntityProp = $"{entityNameLowercase}ToUpdate"; var entityClassPath = ClassPathHelper.EntityClassPath(solutionDirectory, "", projectBaseName); var dtoClassPath = ClassPathHelper.DtoClassPath(solutionDirectory, "", entity.Name, projectBaseName); var exceptionsClassPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, "", projectBaseName); var contextClassPath = ClassPathHelper.DbContextClassPath(solutionDirectory, "", projectBaseName); var validatorsClassPath = ClassPathHelper.ValidationClassPath(solutionDirectory, "", entity.Plural, projectBaseName); return(@$ "namespace {classNamespace} {{ using {entityClassPath.ClassNamespace}; using {dtoClassPath.ClassNamespace}; using {exceptionsClassPath.ClassNamespace}; using {contextClassPath.ClassNamespace}; using {validatorsClassPath.ClassNamespace}; using AutoMapper; using AutoMapper.QueryableExtensions; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic;
public static string GetQueryFileText(string classNamespace, Entity entity, string contextName, string solutionDirectory, string projectBaseName) { var className = Utilities.GetEntityListFeatureClassName(entity.Name); var queryListName = Utilities.QueryListName(entity.Name); var readDto = Utilities.GetDtoName(entity.Name, Dto.Read); var paramsDto = Utilities.GetDtoName(entity.Name, Dto.ReadParamaters); var primaryKeyPropName = entity.PrimaryKeyProperty.Name; var entityClassPath = ClassPathHelper.EntityClassPath(solutionDirectory, "", projectBaseName); var dtoClassPath = ClassPathHelper.DtoClassPath(solutionDirectory, "", entity.Name, projectBaseName); var exceptionsClassPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, "", projectBaseName); var contextClassPath = ClassPathHelper.DbContextClassPath(solutionDirectory, "", projectBaseName); var wrapperClassPath = ClassPathHelper.WrappersClassPath(solutionDirectory, "", projectBaseName); return(@$ "namespace {classNamespace} {{ using {entityClassPath.ClassNamespace}; using {dtoClassPath.ClassNamespace}; using {exceptionsClassPath.ClassNamespace}; using {contextClassPath.ClassNamespace}; using {wrapperClassPath.ClassNamespace}; using AutoMapper; using AutoMapper.QueryableExtensions; using MediatR; using Sieve.Models; using Sieve.Services; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks;
public static string GetCommandFileText(string classNamespace, Entity entity, string contextName, string solutionDirectory, string projectBaseName) { var className = Utilities.DeleteEntityFeatureClassName(entity.Name); var deleteCommandName = Utilities.CommandDeleteName(entity.Name); var primaryKeyPropType = entity.PrimaryKeyProperty.Type; var primaryKeyPropName = entity.PrimaryKeyProperty.Name; var entityNameLowercase = entity.Name.LowercaseFirstLetter(); var entityClassPath = ClassPathHelper.EntityClassPath(solutionDirectory, "", projectBaseName); var dtoClassPath = ClassPathHelper.DtoClassPath(solutionDirectory, "", entity.Name, projectBaseName); var exceptionsClassPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, "", projectBaseName); var contextClassPath = ClassPathHelper.DbContextClassPath(solutionDirectory, "", projectBaseName); return(@$ "namespace {classNamespace} {{ using {entityClassPath.ClassNamespace}; using {dtoClassPath.ClassNamespace}; using {exceptionsClassPath.ClassNamespace}; using {contextClassPath.ClassNamespace}; using AutoMapper; using AutoMapper.QueryableExtensions; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic;
public static void CreateApiException(string solutionDirectory, string projectBaseName) { try { var classPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, $"ApiException.cs", projectBaseName); if (!Directory.Exists(classPath.ClassDirectory)) { Directory.CreateDirectory(classPath.ClassDirectory); } if (File.Exists(classPath.FullClassPath)) { throw new FileAlreadyExistsException(classPath.FullClassPath); } using (FileStream fs = File.Create(classPath.FullClassPath)) { var data = ""; data = GetApiExceptionFileText(classPath.ClassNamespace); fs.Write(Encoding.UTF8.GetBytes(data)); } } catch (FileAlreadyExistsException e) { WriteError(e.Message); throw; } catch (Exception e) { WriteError($"An unhandled exception occurred when running the API command.\nThe error details are: \n{e.Message}"); throw; } }
public static void CreateExceptions(string solutionDirectory, string projectBaseName) { try { // ****this class path will have an invalid FullClassPath. just need the directory var classPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, "", projectBaseName); if (!Directory.Exists(classPath.ClassDirectory)) { Directory.CreateDirectory(classPath.ClassDirectory); } CreateApiException(solutionDirectory, projectBaseName); CreateValidationException(solutionDirectory, projectBaseName); } catch (FileAlreadyExistsException e) { WriteError(e.Message); throw; } catch (Exception e) { WriteError($"An unhandled exception occurred when running the API command.\nThe error details are: \n{e.Message}"); throw; } }
public static string GetErrorHandlerMiddlewareText(string solutionDirectory, string projectBaseName, string classNamespace) { var wrappersClassPath = ClassPathHelper.WrappersClassPath(solutionDirectory, "", projectBaseName); var exceptionsClassPath = ClassPathHelper.CoreExceptionClassPath(solutionDirectory, "", projectBaseName); return(@$ "namespace {classNamespace} {{ using {exceptionsClassPath.ClassNamespace}; using {wrappersClassPath.ClassNamespace}; using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text.Json; using System.Threading.Tasks;
private static void BuildCoreProject(string solutionDirectory, string projectDirectory, string projectBaseName, IFileSystem fileSystem) { var solutionFolder = projectDirectory.Replace(solutionDirectory, "").Replace(Path.DirectorySeparatorChar.ToString(), ""); var coreProjectClassPath = ClassPathHelper.CoreProjectClassPath(projectDirectory, projectBaseName); CoreCsProjBuilder.CreateCoreCsProj(projectDirectory, projectBaseName); Utilities.ExecuteProcess("dotnet", $@"sln add ""{coreProjectClassPath.FullClassPath}"" --solution-folder {solutionFolder}", solutionDirectory); // dir won't show up in project until file is added Directory.CreateDirectory(ClassPathHelper.EntityClassPath(projectDirectory, "", projectBaseName).ClassDirectory); Directory.CreateDirectory(ClassPathHelper.DtoClassPath(projectDirectory, "", "", projectBaseName).ClassDirectory); Directory.CreateDirectory(ClassPathHelper.CoreExceptionClassPath(projectDirectory, "", projectBaseName).ClassDirectory); Directory.CreateDirectory(ClassPathHelper.WrappersClassPath(projectDirectory, "", projectBaseName).ClassDirectory); Directory.CreateDirectory(ClassPathHelper.SharedDtoClassPath(projectDirectory, "", projectBaseName).ClassDirectory); BasePaginationParametersBuilder.CreateBasePaginationParameters(projectDirectory, projectBaseName, fileSystem); PagedListBuilder.CreatePagedList(projectDirectory, projectBaseName, fileSystem); ResponseBuilder.CreateResponse(projectDirectory, projectBaseName, fileSystem); CoreExceptionsBuilder.CreateExceptions(projectDirectory, projectBaseName); }