This commit is contained in:
Noah Spannbauer
2023-02-15 12:46:50 -06:00
parent c2d8bd1838
commit 0d5eb3e801
99 changed files with 20124 additions and 213 deletions

View File

@@ -0,0 +1,50 @@
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Teams.Filter;
using Teams.Models;
using Teams.Services;
using Teams.Wrappers;
namespace Teams.Controllers;
[ApiController]
[Route("api/teams")]
public class TeamsController : ControllerBase
{
private readonly ITeamsRepository _teamsRepository;
private readonly IMapper _mapper;
const int maxTeamsPerPage = 50;
public TeamsController(ITeamsRepository teamsRepository, IMapper mapper)
{
_teamsRepository = teamsRepository ?? throw new ArgumentNullException(nameof(teamsRepository));
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
}
[HttpGet]
public async Task<ActionResult<IEnumerable<TeamDto>>> GetTeams([FromQuery] PaginationFilter filter)
{
if (filter.PageSize > maxTeamsPerPage)
{
filter.PageSize = maxTeamsPerPage;
}
var (teamsEntities, pageinationMetadata) = await _teamsRepository.GetTeamsAsync(filter.PageNumber, filter.PageSize);
return Ok(new PagedResponse<IEnumerable<TeamDto>>(_mapper.Map<IEnumerable<TeamDto>>(teamsEntities), pageinationMetadata));
}
[HttpGet("{id}")]
public async Task<ActionResult<TeamDto>> GetTeam(int id)
{
var team = await _teamsRepository.GetTeamAsync(id);
if (team == null)
{
return NotFound();
}
return Ok(new Response<TeamDto>(_mapper.Map<TeamDto>(team)));
}
}