-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ce328c3
commit 54e6f83
Showing
17 changed files
with
1,734 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,211 @@ | ||
using DAO; | ||
using System.Text; | ||
using System; | ||
using System.IO; | ||
|
||
namespace Regras.ApiClasses | ||
{ | ||
public static class ControllerCreator | ||
{ | ||
public static bool CreateController(MD_Tabela tabela, string nomeProjeto) | ||
{ | ||
bool result = true; | ||
|
||
result &= Cria(tabela, nomeProjeto); | ||
|
||
return result; | ||
} | ||
|
||
private static bool Cria(MD_Tabela tabela, string nomeProjeto) | ||
{ | ||
bool result = true; | ||
|
||
try | ||
{ | ||
NamesHandler.ClasseType type = NamesHandler.ClasseType.Controller; | ||
string classeName = NamesHandler.CriaNomeClasse(type, tabela.Nome); | ||
string caminhoFile = NamesHandler.GetDirectoryByType(type) + NamesHandler.CriaNomeArquivoClasse(type, tabela.Nome); | ||
Util.CL_Files.DeleteFilesIfExists(caminhoFile); | ||
|
||
StringBuilder stringBuilder = new StringBuilder(); | ||
stringBuilder.AppendLine($"using {nomeProjeto}.Presentation.Api.Handler;"); | ||
stringBuilder.AppendLine($"using {nomeProjeto}.Application.Helpers;"); | ||
stringBuilder.AppendLine($"using {nomeProjeto}.Domain.ModelClasses;"); | ||
stringBuilder.AppendLine($"using {nomeProjeto}.Presentation.Model.Returns;"); | ||
stringBuilder.AppendLine($"using Microsoft.AspNetCore.Authorization;"); | ||
stringBuilder.AppendLine($"using Microsoft.AspNetCore.Mvc;"); | ||
stringBuilder.AppendLine($"using Microsoft.Extensions.Options;"); | ||
stringBuilder.AppendLine($"using IMainAppService = {nomeProjeto}.Application.Interfaces.{NamesHandler.CriaNomeClasse(NamesHandler.ClasseType.InterfaceService, tabela.Nome)};"); | ||
stringBuilder.AppendLine($"using MainDTO = {nomeProjeto}.Application.DTO.{NamesHandler.CriaNomeClasse(NamesHandler.ClasseType.Dto, tabela.Nome)};"); | ||
stringBuilder.AppendLine($"using MainViewModel = {nomeProjeto}.Presentation.Model.ViewModels.{NamesHandler.CriaNomeClasse(NamesHandler.ClasseType.ViewModel, tabela.Nome)};"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($"namespace {nomeProjeto}.Presentation.Api.Controllers"); | ||
stringBuilder.AppendLine($"{{"); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Controller Class"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" [ApiController]"); | ||
stringBuilder.AppendLine($" [Authorize]"); | ||
stringBuilder.AppendLine($" [Route(\"{tabela.Nome}\")]"); | ||
stringBuilder.AppendLine($" public class {classeName} : ControllerBase, IDisposable"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" private readonly IMainAppService _mainAppService;"); | ||
stringBuilder.AppendLine($" private readonly Settings _settings;"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" private readonly TokenHandler tokenController;"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Class constructor"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" public {classeName}(IMainAppService mainAppService, IOptions<Settings> options, IHttpContextAccessor httpContextAccessor)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" _mainAppService = mainAppService;"); | ||
stringBuilder.AppendLine($" _settings = options.Value;"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" tokenController = new TokenHandler(httpContextAccessor);"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Get all"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"include\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<IEnumerable<MainViewModel>>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpGet]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Get(string? include = null)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var mainDto = await _mainAppService.GetAllAsync(include);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(mainDto.ProjectedAsCollection<MainViewModel>());"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Get by code"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"code\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"include\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<MainViewModel>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpGet(\"{{code}}\")]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Get(string code, string? include = null)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var mainDto = await _mainAppService.GetAsync(code, include);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(mainDto.ProjectedAs<MainViewModel>());"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// List paged"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"page\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"quantity\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"isActive\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"term\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"orderBy\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"include\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<PaggedBaseReturn<MainViewModel>>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpGet(\"pagged\")]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> GetPagged(int page, int quantity, string isActive = null, string term = null, string orderBy = null, string? include = null)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var result = await _mainAppService.GetAllPagedAsync(page, quantity, isActive, term, orderBy: orderBy, include: include);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" var list = result.Item3.ProjectedAsCollection<MainViewModel>();"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok("); | ||
stringBuilder.AppendLine($" new PaggedBaseReturn<MainViewModel>"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" Page = page,"); | ||
stringBuilder.AppendLine($" Quantity = quantity,"); | ||
stringBuilder.AppendLine($" TotalCount = result.Item1,"); | ||
stringBuilder.AppendLine($" TotalPages = result.Item2,"); | ||
stringBuilder.AppendLine($" Results = list"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($" );"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// List paged"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"quantityMax\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"isActive\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"term\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"orderBy\"></param>"); | ||
stringBuilder.AppendLine($" /// <param name=\"include\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<PaggedBaseReturn<MainViewModel>>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpGet(\"export\")]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Export(int quantityMax, string isActive = null, string term = null, string orderBy = null, string? include = null)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var result = await _mainAppService.GetReport(quantityMax, isActive, term, orderBy: orderBy, include: include);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(new BaseReturn<string>"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" Message = \"Report created\","); | ||
stringBuilder.AppendLine($" Status = 200,"); | ||
stringBuilder.AppendLine($" Object = result"); | ||
stringBuilder.AppendLine($" }});"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Insert new"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"model\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<IActionResult>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpPost]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Post([FromBody] MainViewModel model)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var mainDto = model.ProjectedAs<MainDTO>();"); | ||
stringBuilder.AppendLine($" var result = await _mainAppService.InsertAsync(mainDto);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(result);"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Update"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"model\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<IActionResult>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpPut]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Put([FromBody] MainViewModel model)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var mainDto = model.ProjectedAs<MainDTO>();"); | ||
stringBuilder.AppendLine($" var result = await _mainAppService.UpdateAsync(mainDto);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(result);"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Remove"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"model\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[Task<IActionResult>]]></returns>"); | ||
stringBuilder.AppendLine($" [HttpDelete]"); | ||
stringBuilder.AppendLine($" public async Task<IActionResult> Delete([FromBody] MainViewModel model)"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" var mainDto = model.ProjectedAs<MainDTO>();"); | ||
stringBuilder.AppendLine($" var result = await _mainAppService.RemoveAsync(mainDto);"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" return Ok(result);"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($""); | ||
stringBuilder.AppendLine($" /// <summary>"); | ||
stringBuilder.AppendLine($" /// Dispose"); | ||
stringBuilder.AppendLine($" /// </summary>"); | ||
stringBuilder.AppendLine($" /// <param name=\"disposing\"></param>"); | ||
stringBuilder.AppendLine($" /// <returns><![CDATA[]]></returns>"); | ||
stringBuilder.AppendLine($" public void Dispose()"); | ||
stringBuilder.AppendLine($" {{"); | ||
stringBuilder.AppendLine($" _mainAppService.Dispose();"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($" }}"); | ||
stringBuilder.AppendLine($"}}"); | ||
|
||
File.WriteAllText(caminhoFile, stringBuilder.ToString()); | ||
} | ||
catch (Exception ex) | ||
{ | ||
Util.CL_Files.LogException(ex); | ||
result = false; | ||
} | ||
|
||
return result; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
using Model; | ||
using System; | ||
using System.Collections.Generic; | ||
|
||
namespace Regras.ApiClasses | ||
{ | ||
public static class CreatorApiClasses | ||
{ | ||
public static bool CreateApiClasses(List<MD_Tabela> tabelas, string projetoNome, out string message) | ||
{ | ||
bool result = true; | ||
message = string.Empty; | ||
Visao.BarraDeCarregamento barra = new Visao.BarraDeCarregamento(tabelas.Count, "Criando classes"); | ||
barra.Show(); | ||
|
||
try | ||
{ | ||
|
||
foreach(var tabela in tabelas) | ||
{ | ||
result &= EntidadesCreator.CreateEntidades(tabela.DAO, projetoNome); | ||
|
||
result &= RepositoryCreator.CreateRepository(tabela.DAO, projetoNome); | ||
|
||
result &= ProfilesCreator.CreateProfiles(tabela.DAO, projetoNome); | ||
|
||
result &= ServiceCreator.CreateService(tabela.DAO, projetoNome); | ||
|
||
result &= ControllerCreator.CreateController(tabela.DAO, projetoNome); | ||
barra.AvancaBarra(1); | ||
} | ||
|
||
} | ||
catch (Exception ex) | ||
{ | ||
result = false; | ||
Util.CL_Files.LogException(ex); | ||
message = ex.Message; | ||
} | ||
finally | ||
{ | ||
barra.Dispose(); | ||
} | ||
|
||
return result; | ||
} | ||
} | ||
} |
Oops, something went wrong.