using Cortex.Mediator;
using Lutra.Application.Verspakketten;
using Microsoft.AspNetCore.Mvc;
namespace Lutra.API.Controllers
{
///
/// Provides read-only access to verspakket resources.
///
[ApiController]
[Route("api/verspakketten")]
[Produces("application/json")]
public class VerspakkettenController(IMediator mediator) : ControllerBase
{
///
/// Gets a page of verspakketten.
///
/// The number of items to skip. Default: 0.
/// The maximum number of items to return. Default: 50.
/// The field to sort by: Naam, PrijsInCenten, AverageCijferSmaak, or AverageCijferBereiden. Default: Naam.
/// The sort direction: Ascending or Descending. Default: Ascending.
/// The requested verspakket page.
[HttpGet]
[ProducesResponseType(typeof(GetVerspakketten.Response), StatusCodes.Status200OK)]
public async Task Get(
int skip = 0,
int take = 50,
VerspakketSortField sortField = VerspakketSortField.Naam,
SortDirection sortDirection = SortDirection.Ascending)
{
return await mediator.SendQueryAsync(
new GetVerspakketten.Query(skip, take, sortField, sortDirection));
}
///
/// Gets a specific verspakket by ID.
///
/// The verspakket ID.
/// Returns 200 OK with the verspakket when found, or 404 Not Found when not found.
[HttpGet("{id:guid}")]
[ProducesResponseType(typeof(GetVerspakket.Response), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task> GetById(Guid id)
{
var result = await mediator.SendQueryAsync(new GetVerspakket.Query(id));
if (result?.Verspakket == null)
{
return NotFound();
}
return Ok(result);
}
}
}