using AutoMapper; using Microsoft.AspNetCore.Authorization; 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.Linq; using System.Threading.Tasks; namespace REC_HUMA.API.Controllers { [Route("api/[controller]")] [ApiController] public class BeneficioController : ControllerBase { private readonly IBeneficioRepo _BeneficioRepo; private readonly IMapper _mapper; private readonly ILogger _logger; public BeneficioController(IBeneficioRepo BeneficioRepo, IMapper mapper, ILogger logger) { _BeneficioRepo = BeneficioRepo; _mapper = mapper; _logger = logger; } [HttpGet] public async Task> GetBeneficios() { try { var beneficios = await _BeneficioRepo.GetBeneficios(); var beneficioDto = _mapper.Map>(beneficios); return beneficioDto; } catch (Exception ex) { var beneficioDTO = new List { new BeneficioDto() { CodResultado = 500, Mensaje = "Error" } }; _logger.LogError(ex, ex.Message); return beneficioDTO; } } [HttpGet("{id}")] public async Task GetBeneficio(int id) { try { var beneficios = await _BeneficioRepo.GetBeneficio(id); var beneficioDto = _mapper.Map(beneficios); return beneficioDto; } catch (Exception ex) { var beneficioDTO = new BeneficioDto { CodResultado = 500, Mensaje = "Error" }; _logger.LogError(ex, ex.Message); return beneficioDTO; } } [HttpPut] public async Task PutBeneficio(BeneficioDto beneficioDto) { try { var beneficio = _mapper.Map(beneficioDto); await _BeneficioRepo.PutBeneficio(beneficio); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [HttpPost] public async Task PostBeneficio(BeneficioDto beneficioDto) { try { var beneficio = _mapper.Map(beneficioDto); await _BeneficioRepo.PostBeneficio(beneficio); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [HttpDelete("{id}")] public async Task DeleteBeneficios(int id) { try { await _BeneficioRepo.DeleteBeneficio(id); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } } }