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; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace REC_HUMA.API.Controllers { [Route("api/[controller]")] [ApiController] public class TelefonoController : ControllerBase { private readonly ITelefonoRepo _TelefonoRepo; private readonly IMapper _mapper; private readonly ILogger _logger; public TelefonoController(ITelefonoRepo TelefonoRepo, IMapper mapper, ILogger logger) { _TelefonoRepo = TelefonoRepo; _mapper = mapper; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } [HttpGet] public async Task> GetTelefonos() { try { var telefonos = await _TelefonoRepo.GetTelefonos(); var telefonoDto = _mapper.Map>(telefonos); return telefonoDto; } catch (Exception ex) { var TelefonoDTO = new List(); TelefonoDTO.Add(new TelefonoDto() { CodResultado = 500, Mensaje = "Error" }); _logger.LogError(ex, ex.Message); return TelefonoDTO; } } [HttpGet("Id")] public async Task GetTelefono(int IdTelefono) { try { var telefonos = await _TelefonoRepo.GetTelefono(IdTelefono); var telefonoDto = _mapper.Map(telefonos); return telefonoDto; } catch (Exception ex) { var TelefonoDTO = new TelefonoDto(); TelefonoDTO.CodResultado = 500; TelefonoDTO.Mensaje = "Error"; _logger.LogError(ex, ex.Message); return TelefonoDTO; } } [HttpPut] public async Task PutTelefono(TelefonoDto telefonoDto) { try { var telefono = _mapper.Map(telefonoDto); await _TelefonoRepo.PutTelefono(telefono); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } [HttpPost] public async Task PostTelefono(TelefonoDto telefonoDto) { try { var telefono = _mapper.Map(telefonoDto); await _TelefonoRepo.PostTelefono(telefono); return Ok(new RespuestaDTO() { Resultado = "Se realizaron los cambios satisfactoriamente" }); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return Ok(StatusCode(500)); } } [HttpDelete("Id")] public async Task DeleteTelefono(int IdTelefono) { try { await _TelefonoRepo.DeleteTelefono(IdTelefono); return Ok(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); return StatusCode(500); } } } }