using AutoMapper; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using REC_HUMA.CORE.DTOs; using REC_HUMA.CORE.Entities; using REC_HUMA.CORE.Interfaces; using REC_HUMA.INFRASTRUCTURE.Repositories; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace REC_HUMA.API.Controllers { [Route("api/[controller]")] [ApiController] public class DiasAcreditadosPeriodoController : ControllerBase { private readonly IDiasAcreditadosPeriodoRepo _diasAcreditadosPeriodoRepo; private readonly IMapper _mapper; private readonly ILogger _logger; public DiasAcreditadosPeriodoController(IDiasAcreditadosPeriodoRepo diasAcreditadosPeriodoRepo, IMapper mapper, ILogger logger) { _diasAcreditadosPeriodoRepo = diasAcreditadosPeriodoRepo; _mapper = mapper; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } [HttpGet] public async Task> GetDiasAcreditados() { try { var diasAcreditados = await _diasAcreditadosPeriodoRepo.GetAllDiasAcreditados(); var diasAcreditadosDto = _mapper.Map>(diasAcreditados); return diasAcreditadosDto; } catch (Exception ex) { var diasAcreditadosDto = new List { new DiasAcreditadosPeriodoDto() { CodResultado = 500, Mensaje = "Error" } }; _logger.LogError(ex, ex.Message); return diasAcreditadosDto; } } [HttpGet("{id}")] public async Task GetDiasAcreditados(int id) { try { var diasAcreditados = await _diasAcreditadosPeriodoRepo.GetDiasAcreditados(id); var diasAcreditadosDto = _mapper.Map(diasAcreditados); return diasAcreditadosDto; } catch (Exception ex) { var diasAcreditadosDto = new DiasAcreditadosPeriodoDto { CodResultado = 500, Mensaje = "Error" }; _logger.LogError(ex, ex.Message); return diasAcreditadosDto; } } [HttpPost] public async Task PostDiasAcreditados(DiasAcreditadosPeriodoDto diasAcreditadosPeriodoDto) { try { var DiasAcreditadosPeriodo = _mapper.Map(diasAcreditadosPeriodoDto); await _diasAcreditadosPeriodoRepo.PostDiasAcreditados(DiasAcreditadosPeriodo); return Ok(new RespuestaDTO() { Resultado = "Se agregó la persona satisfactoriamente" }); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [Route("ModificarDias/{idFuncionario}/{diasSolicitados}/{idSolicitud}")] [HttpGet] public async Task PutDiasAcreditados(int idFuncionario, int diasSolicitados,int idSolicitud) { try { var diasAcreditados = await _diasAcreditadosPeriodoRepo.RebajarDiasAcreditados(idFuncionario, diasSolicitados, idSolicitud); return Ok(new RespuestaDTO() { Resultado = "Se modificaron los dias satisfactoriamente." }); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } } }