Major update

This commit is contained in:
2023-06-01 08:52:05 -05:00
parent d7c0f373f4
commit df84287eb2
264 changed files with 8614 additions and 964 deletions

View File

@@ -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);
}
}