Updating
This commit is contained in:
50
teams/Controllers/TeamsController.cs
Normal file
50
teams/Controllers/TeamsController.cs
Normal 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)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user