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); } } }