78 lines
2.5 KiB
C#
Raw Normal View History

2025-01-24 19:17:26 -03:00
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<IActionResult> 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<IActionResult> 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<IActionResult> GetDashboardDetail([FromBody] GenericParameters<string, string, object, object, object> 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<FileResult> ExportDashboardDetail([FromBody] GenericParameters<string, string, object, object, object> 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);
}
}
}
}