From 42e67d5600dad279924ab53261cb3ef2f5fd9362 Mon Sep 17 00:00:00 2001 From: Leandro Hernan Rojas Date: Thu, 10 Apr 2025 16:14:53 -0300 Subject: [PATCH] Update TaxCondition Endpoint in API --- Core/Interfaces/ITaxConditionDom.cs | 15 +++++++ Core/Interfaces/ITicketDom.cs | 1 - Core/Services/AccountTypeService.cs | 7 +-- Core/Services/TaxConditionService.cs | 44 +++++++++++++++++++ Domain/Entities/ETaxCondition.cs | 11 +++++ .../Interfaces/IPhSTaxConditionRepository.cs | 10 +++++ .../PhOhTaxConditionRepository.cs | 27 ++++++++++++ .../Sales/TaxConditionController.cs | 40 +++++++++++++++++ 8 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 Core/Interfaces/ITaxConditionDom.cs create mode 100644 Core/Services/TaxConditionService.cs create mode 100644 Domain/Entities/ETaxCondition.cs create mode 100644 Models/Interfaces/IPhSTaxConditionRepository.cs create mode 100644 Models/Repositories/PhOhTaxConditionRepository.cs create mode 100644 phronCare.API/Controllers/Sales/TaxConditionController.cs diff --git a/Core/Interfaces/ITaxConditionDom.cs b/Core/Interfaces/ITaxConditionDom.cs new file mode 100644 index 0000000..6adfb98 --- /dev/null +++ b/Core/Interfaces/ITaxConditionDom.cs @@ -0,0 +1,15 @@ +using Domain.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Core.Interfaces +{ + public interface ITaxConditionDom + { + Task> GetAllAsync(); + Task GetByNameAsync(string name); + } +} diff --git a/Core/Interfaces/ITicketDom.cs b/Core/Interfaces/ITicketDom.cs index 902a839..f6dea27 100644 --- a/Core/Interfaces/ITicketDom.cs +++ b/Core/Interfaces/ITicketDom.cs @@ -23,7 +23,6 @@ namespace Core.Interfaces Task> GetSummaryAsync(); // Cambiado a asincrónico Task> GetTicketDashboardAsync(string estado, string orden); // Cambiado a asincrónico Task InsertTicketAsync(ETicket ticket); // Cambiado a asincrónico - Task ExcelTicketDashboardAsync(string estado, string orden); } } diff --git a/Core/Services/AccountTypeService.cs b/Core/Services/AccountTypeService.cs index 9462332..26f07cb 100644 --- a/Core/Services/AccountTypeService.cs +++ b/Core/Services/AccountTypeService.cs @@ -7,13 +7,14 @@ namespace Core.Services { public class AccountTypeService : IAccountTypeDom { + #region Declaraciones y Constructor private readonly IPhSAccountTypeRepository _repository; - public AccountTypeService(IPhSAccountTypeRepository repository) { _repository = repository ?? throw new ArgumentNullException(nameof(repository)); } - + #endregion + #region Metodos de clase public async Task> GetAllAsync() { try @@ -26,7 +27,6 @@ namespace Core.Services throw new Exception($"{methodName} Message: {ex.Message}", ex); } } - public async Task GetByNameAsync(string name) { try @@ -39,5 +39,6 @@ namespace Core.Services throw new Exception($"{methodName} Message: {ex.Message}", ex); } } + #endregion } } diff --git a/Core/Services/TaxConditionService.cs b/Core/Services/TaxConditionService.cs new file mode 100644 index 0000000..3d4bcc5 --- /dev/null +++ b/Core/Services/TaxConditionService.cs @@ -0,0 +1,44 @@ +using Core.Interfaces; +using Domain.Entities; +using Models.Interfaces; +using System.Reflection; + +namespace Core.Services +{ + public class TaxConditionService : ITaxConditionDom + { + #region Declaraciones y Constructor + private readonly IPhSTaxConditionRepository _repository; + public TaxConditionService(IPhSTaxConditionRepository repository) + { + _repository = repository ?? throw new ArgumentNullException(nameof(repository)); + } + #endregion + #region Metodos de clase + public async Task> GetAllAsync() + { + try + { + return await _repository.GetAllAsync(); + } + catch (Exception ex) + { + var methodName = MethodBase.GetCurrentMethod()?.Name ?? "UnknownMethod"; + throw new Exception($"{methodName} Message: {ex.Message}", ex); + } + } + public async Task GetByNameAsync(string name) + { + try + { + return await _repository.GetByNameAsync(name); + } + catch (Exception ex) + { + var methodName = MethodBase.GetCurrentMethod()?.Name ?? "UnknownMethod"; + throw new Exception($"{methodName} Message: {ex.Message}", ex); + } + } + #endregion + } +} \ No newline at end of file diff --git a/Domain/Entities/ETaxCondition.cs b/Domain/Entities/ETaxCondition.cs new file mode 100644 index 0000000..4f432b5 --- /dev/null +++ b/Domain/Entities/ETaxCondition.cs @@ -0,0 +1,11 @@ +namespace Domain.Entities +{ + public class ETaxCondition + { + public int Id { get; set; } + + public string Description { get; set; } = null!; + + public string CmpClase { get; set; } = null!; + } +} diff --git a/Models/Interfaces/IPhSTaxConditionRepository.cs b/Models/Interfaces/IPhSTaxConditionRepository.cs new file mode 100644 index 0000000..7df51dc --- /dev/null +++ b/Models/Interfaces/IPhSTaxConditionRepository.cs @@ -0,0 +1,10 @@ +using Domain.Entities; + +namespace Models.Interfaces +{ + public interface IPhSTaxConditionRepository + { + Task> GetAllAsync(); + Task GetByNameAsync(string name); + } +} \ No newline at end of file diff --git a/Models/Repositories/PhOhTaxConditionRepository.cs b/Models/Repositories/PhOhTaxConditionRepository.cs new file mode 100644 index 0000000..d83cb69 --- /dev/null +++ b/Models/Repositories/PhOhTaxConditionRepository.cs @@ -0,0 +1,27 @@ +using Domain.Entities; +using Microsoft.EntityFrameworkCore; +using Models.Helpers; +using Models.Interfaces; +using Models.Models; + +namespace Models.Repositories +{ + public class PhOhTaxConditionRepository(PhronCareOperationsHubContext context): IPhSTaxConditionRepository + { + #region Declaraciones y Constructor + private readonly PhronCareOperationsHubContext _context = context; + #endregion + #region Metodos de clase + async Task> IPhSTaxConditionRepository.GetAllAsync() + { + var accountTypes = await _context.PhOhTaxConditions.ToListAsync(); + return accountTypes.Select(EntityMapper.MapEntity); + } + public async Task GetByNameAsync(string name) + { + var taxDescription = await _context.PhOhTaxConditions.FirstOrDefaultAsync(a => a.Description.Contains(name)); + return taxDescription != null ? EntityMapper.MapEntity(taxDescription) : null; + } + #endregion + } +} diff --git a/phronCare.API/Controllers/Sales/TaxConditionController.cs b/phronCare.API/Controllers/Sales/TaxConditionController.cs new file mode 100644 index 0000000..15eca79 --- /dev/null +++ b/phronCare.API/Controllers/Sales/TaxConditionController.cs @@ -0,0 +1,40 @@ +using Core.Interfaces; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace phronCare.API.Controllers.Sales +{ + [Route("api/[controller]")] + [ApiController] + public class TaxConditionController : ControllerBase + { + private readonly ITaxConditionDom _taxConditionService ; + public TaxConditionController(ITaxConditionDom taxConditionService) + { + _taxConditionService = taxConditionService ?? throw new ArgumentNullException(nameof(taxConditionService)); + } + [HttpGet("GetAll")] + public async Task GetAll() + { + try + { + var result = await _taxConditionService.GetAllAsync(); + return Ok(result); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + [HttpGet("GetByName/{name}")] + public async Task GetByName(string name) + { + var result = await _taxConditionService.GetByNameAsync(name); + if (result == null) + return NotFound($"No se encontró un tipo de cuenta con el nombre '{name}'."); + + return Ok(result); + } + + } +}