Files
mlb-gameday-dotnet-react/leagues/Controllers/LeaguesController.cs
2023-06-01 08:52:05 -05:00

55 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using Leagues.Queries;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace Leagues.Controllers
{
[ApiController]
[Route("api/leagues")]
public class LeaguesController : ControllerBase
{
private readonly ISender _sender;
public LeaguesController(ISender sender) => _sender = sender;
[HttpGet]
public async Task<ActionResult> GetLeagues([FromQuery] int pageNumber, [FromQuery] int pageSize)
{
var leagues = await _sender.Send(new GetLeaguesQuery
{
PageNumber = pageNumber,
PageSize = pageSize
});
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new
{
leagues.CurrentPage,
leagues.PageSize,
leagues.TotalCount,
leagues.TotalPages
}));
return Ok(leagues);
}
[HttpGet("{id}")]
public async Task<ActionResult> GetLeagueById(int id)
{
var league = await _sender.Send(new GetLeagueByIdQuery
{
LeagueId = id
});
return Ok(league);
}
}
}