Files
TicketAppIncrArchi/TicketAppIncrArchi.API/Controllers/TicketsController.cs
2026-04-16 14:21:58 +02:00

56 lines
1.4 KiB
C#

using Microsoft.AspNetCore.Mvc;
using TicketAppIncrArchi.Application.DTO;
using TicketAppIncrArchi.Application.Interfaces;
namespace TicketAppIncrArchi.API.Controllers;
[ApiController]
[Route("api/tickets")]
public class TicketsController : ControllerBase
{
//TicketService contain the list of tickets and
//function to retrieve them
private readonly ITicketService _service;
public TicketsController(ITicketService service)
{
_service = service;
}
//-----------------------------------------------------------
[HttpGet]
public IEnumerable<TicketResponse> Get()
{
return _service.GetAll().Result;
}
[HttpGet("{id}")]
public ActionResult<TicketResponse> Get(Guid id)
{
var result = _service.GetById(id).Result;
if (result is FailureResult<TicketResponse> fail)
return NotFound(fail.Error);
var success = (SuccessResult<TicketResponse>) result;
return Ok(success.Value);
}
[HttpPost]
public IActionResult Create(CreateTicketRequest request)
{
var result = _service.Create(request).Result;
if (result is FailureResult<CreateTicketResponse> fail)
return BadRequest(fail.Error);
var success = (SuccessResult<CreateTicketResponse>) result;
return CreatedAtAction(
nameof(Get),
new {id = success.Value.Id },
success.Value
);
}
}