using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using AutoMapper; using MediatR; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Venues.Entities; using Venues.Queries; namespace Venues.Controllers { [ApiController] [Route("api/venues")] public class VenuesController : ControllerBase { private readonly ISender _sender; public VenuesController(ISender sender) => _sender = sender; [HttpGet] public async Task GetVenues([FromQuery] int pageNumber, [FromQuery] int pageSize) { var venues = await _sender.Send(new GetVenuesQuery { PageNumber = pageNumber, PageSize = pageSize }); Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new { venues.CurrentPage, venues.PageSize, venues.TotalCount, venues.TotalPages })); return Ok(venues); } [HttpGet("{id}")] public async Task GetVenueById(int id) { var venue = await _sender.Send(new GetVenueByIdQuery { VenueId = id }); return Ok(venue); } } }