55 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
|