Major update
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
using AutoMapper;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Teams.Filter;
|
||||
using Teams.Models;
|
||||
using Teams.Services;
|
||||
using Teams.Wrappers;
|
||||
using Newtonsoft.Json;
|
||||
using Teams.Entities;
|
||||
using Teams.Queries;
|
||||
|
||||
namespace Teams.Controllers;
|
||||
|
||||
@@ -11,40 +10,39 @@ namespace Teams.Controllers;
|
||||
[Route("api/teams")]
|
||||
public class TeamsController : ControllerBase
|
||||
{
|
||||
private readonly ITeamsRepository _teamsRepository;
|
||||
private readonly IMapper _mapper;
|
||||
const int maxTeamsPerPage = 50;
|
||||
private readonly ISender _sender;
|
||||
|
||||
public TeamsController(ITeamsRepository teamsRepository, IMapper mapper)
|
||||
{
|
||||
_teamsRepository = teamsRepository ?? throw new ArgumentNullException(nameof(teamsRepository));
|
||||
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
|
||||
}
|
||||
public TeamsController(ISender sender) => _sender = sender;
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<TeamDto>>> GetTeams([FromQuery] PaginationFilter filter)
|
||||
public async Task<ActionResult> GetTeams([FromQuery] int pageNumber, [FromQuery] int pageSize)
|
||||
{
|
||||
if (filter.PageSize > maxTeamsPerPage)
|
||||
var teams = await _sender.Send(new GetTeamsQuery
|
||||
{
|
||||
filter.PageSize = maxTeamsPerPage;
|
||||
}
|
||||
PageNumber = pageNumber,
|
||||
PageSize = pageSize
|
||||
});
|
||||
|
||||
var (teamsEntities, pageinationMetadata) = await _teamsRepository.GetTeamsAsync(filter.PageNumber, filter.PageSize);
|
||||
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new
|
||||
{
|
||||
teams.CurrentPage,
|
||||
teams.PageSize,
|
||||
teams.TotalCount,
|
||||
teams.TotalPages
|
||||
}));
|
||||
|
||||
return Ok(new PagedResponse<IEnumerable<TeamDto>>(_mapper.Map<IEnumerable<TeamDto>>(teamsEntities), pageinationMetadata));
|
||||
return Ok(teams);
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
public async Task<ActionResult<TeamDto>> GetTeam(int id)
|
||||
public async Task<ActionResult> GetTeamById(int id)
|
||||
{
|
||||
var team = await _teamsRepository.GetTeamAsync(id);
|
||||
|
||||
if (team == null)
|
||||
var team = await _sender.Send(new GetTeamByIdQuery
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
TeamId = id
|
||||
});
|
||||
|
||||
return Ok(new Response<TeamDto>(_mapper.Map<TeamDto>(team)));
|
||||
return Ok(team);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user