using Core.Interfaces; using Core.Services; using Domain.Entities; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; namespace phronCare.API.Controllers.Tickets { [Route("api/[controller]")] [ApiController] public class TicketController : ControllerBase { private readonly ITicketDom _ticketService; // Constructor que acepta ITicketDom como parámetro public TicketController(ITicketDom ticketService) { _ticketService = ticketService ?? throw new ArgumentNullException(nameof(ticketService)); } [HttpPost("InsertTicket")] public async Task InsertTicket([FromBody] ETicket ticket) { try { await _ticketService.InsertTicketAsync(ticket); // Llamada asincrónica return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpGet("GetSummary")] public async Task GetSummary() { try { var summary = await _ticketService.GetSummaryAsync(); // Llamada asincrónica return Ok(summary); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("GetDashboardDetail")] public async Task GetDashboardDetail([FromBody] GenericParameters parameters) { try { var dashboardDetail = await _ticketService.GetTicketDashboardAsync(parameters.Param1, parameters.Param2); // Llamada asincrónica return Ok(dashboardDetail); } catch (Exception ex) { return BadRequest(ex.Message); } } [HttpPost("ExportDashboardDetail")] public async Task ExportDashboardDetail([FromBody] GenericParameters parameters) { try { var file = await _ticketService.ExcelTicketDashboardAsync(parameters.Param1, parameters.Param2); // Llamada asincrónica return File(file, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); } catch (Exception ex) { throw new InvalidDataException(ex.Message); } } } }