Files
TicketAppIncrArchi/TicketAppIncrArchi.API/Controllers/TicketsController.cs

55 lines
1.3 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();
}
[HttpGet("{id}")]
public ActionResult<TicketResponse> Get(Guid id)
{
var ticket = _service.GetById(id);
if (ticket == null) return NotFound();
return Ok(ticket);
}
[HttpPost]
public IActionResult Create(CreateTicketRequest request)
{
var result = _service.Create(request);
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
);
}
}