using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MediatR; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Sports.Queries; namespace Sports.Controllers { [ApiController] [Route("api/sports")] public class SportsController : ControllerBase { private readonly ISender _sender; public SportsController(ISender sender) => _sender = sender; [HttpGet] public async Task GetSports([FromQuery] int pageNumber, [FromQuery] int pageSize) { var sports = await _sender.Send(new GetSportsQuery { PageNumber = pageNumber, PageSize = pageSize }); Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new { sports.CurrentPage, sports.PageSize, sports.TotalCount, sports.TotalPages })); return Ok(sports); } [HttpGet("{id}")] public async Task GetSportById(int id) { var sport = await _sender.Send(new GetSportByIdQuery { SportId = id }); return Ok(sport); } } }