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 System.Collections.Generic; using System.Threading.Tasks; using System; namespace REC_HUMA.API.Controllers { [Route("api/[controller]")] [ApiController] public class DiasFeriadosController : ControllerBase { private readonly IDiasFeriadosRepo _DiasFeriadosRepo; private readonly IMapper _mapper; private readonly ILogger _logger; public DiasFeriadosController(IDiasFeriadosRepo DiasFeriadosRepo, IMapper mapper, ILogger logger) { _DiasFeriadosRepo = DiasFeriadosRepo; _mapper = mapper; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } [HttpGet] public async Task> GetDiasFeriados() { try { var diasFeriados = await _DiasFeriadosRepo.GetDiasFeriados(); var diasFeriadosDto = _mapper.Map>(diasFeriados); return diasFeriadosDto; } catch (Exception ex) { var diasFeriadosDto = new List { new DiasFeriadosDto() { CodResultado = 500, Mensaje = "Error" } }; _logger.LogError(ex, ex.Message); return diasFeriadosDto; } } [HttpGet("{id}")] public async Task GetDiaFeriado(int id) { try { var diaFeriado = await _DiasFeriadosRepo.GetDiaFeriado(id); var diaFeriadoDto = _mapper.Map(diaFeriado); return diaFeriadoDto; } catch (Exception ex) { var diaFeriadoDto = new DiasFeriadosDto { CodResultado = 500, Mensaje = "Error" }; _logger.LogError(ex, ex.Message); return diaFeriadoDto; } } [HttpPut] public async Task PutDiaFeriado(DiasFeriadosDto diaFeriadoDto) { try { var diaFeriado = _mapper.Map(diaFeriadoDto); await _DiasFeriadosRepo.PutDiaFeriado(diaFeriado); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [HttpPost] public async Task PostDiaFeriado(DiasFeriadosDto diaFeriadoDto) { try { var diaFeriado = _mapper.Map(diaFeriadoDto); await _DiasFeriadosRepo.PostDiaFeriado(diaFeriado); return Ok(new RespuestaDTO() { Resultado = "Se realizaron los cambios satisfactoriamente" }); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [HttpDelete("{id}")] public async Task DeleteDiaFeriado(int id) { try { await _DiasFeriadosRepo.DeleteDiaFeriado(id); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } } }