using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using VberAdmin.Models; using VberAdmin.Templates.V4; namespace VberAdmin.Generating; public class FileCreateV4 : FileCreateBase, IFileCreate { public async Task CreateAsync(TemplateViewModel viewModel) { await CreateDtoAsync(viewModel); await CreateApplicationAsync(viewModel); await CreateWebAsync(viewModel); } /// /// 生成DTO /// private async Task CreateDtoAsync(TemplateViewModel viewModel) { List dtoFiles = new List(); if (viewModel.IsCreateDto) { if (await CreateT4Async(viewModel, viewModel.CreateDtoName)) dtoFiles.Add(viewModel.DtoFolder + viewModel.CreateDtoName); } if (viewModel.IsUpdateDto) { if (await CreateT4Async(viewModel, viewModel.UpdateDtoName)) dtoFiles.Add(viewModel.DtoFolder + viewModel.UpdateDtoName); } if (viewModel.IsUpdateDto) { if (await CreateT4Async(viewModel, viewModel.ListDtoName)) dtoFiles.Add(viewModel.DtoFolder + viewModel.ListDtoName); } if (dtoFiles.Any()) await AddFilesToProjectAsync(viewModel.ApplicationName, dtoFiles); } /// /// 生成Application /// private async Task CreateApplicationAsync(TemplateViewModel viewModel) { List applicationFileList = new List(); if (viewModel.IsApplicationService) { if (await CreateT4Async(viewModel, viewModel.ServiceName, 1)) applicationFileList.Add(viewModel.ServiceFolder + viewModel.ServiceName); } if (viewModel.IsIApplicationService) { if (await CreateT4Async(viewModel, viewModel.ServiceInterfaceName, 1)) applicationFileList.Add(viewModel.ServiceFolder + viewModel.ServiceInterfaceName); } if (applicationFileList.Any()) await AddFilesToProjectAsync(viewModel.ApplicationName, applicationFileList); } /// /// 生成Web /// private async Task CreateWebAsync(TemplateViewModel viewModel) { List webFileList = new List(); if (viewModel.IsController) { if (await CreateT4Async(viewModel, viewModel.ControllerName, 2)) webFileList.Add(viewModel.ControllerFolder + viewModel.ControllerName); } if (viewModel.IsView) { if (await CreateT4Async(viewModel, viewModel.ViewsName, 3)) webFileList.Add(viewModel.ViewsFolder + viewModel.ViewsName); } if (webFileList.Any()) await AddFilesToProjectAsync(viewModel.WebName, webFileList); } }