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

@@ -3,12 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoMapper;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Venues.Entities;
using Venues.Filter;
using Venues.Models;
using Venues.Services;
using Venues.Wrappers;
using Venues.Queries;
namespace Venues.Controllers
{
@@ -16,40 +15,39 @@ namespace Venues.Controllers
[Route("api/venues")]
public class VenuesController : ControllerBase
{
private readonly IVenuesRepository _venuesRepository;
private readonly IMapper _mapper;
const int maxVenuesPerPage = 50;
private readonly ISender _sender;
public VenuesController(IVenuesRepository venuesRepository, IMapper mapper)
{
_venuesRepository = venuesRepository ?? throw new ArgumentNullException(nameof(venuesRepository));
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
}
public VenuesController(ISender sender) => _sender = sender;
[HttpGet]
public async Task<ActionResult<IEnumerable<VenueDto>>> GetVenues([FromQuery] PaginationFilter filter)
public async Task<ActionResult> GetVenues([FromQuery] int pageNumber, [FromQuery] int pageSize)
{
if (filter.PageSize > maxVenuesPerPage)
var venues = await _sender.Send(new GetVenuesQuery
{
filter.PageSize = maxVenuesPerPage;
}
PageNumber = pageNumber,
PageSize = pageSize
});
var (venueEntities, paginationMetadata) = await _venuesRepository.GetVenuesAsync(filter.PageNumber, filter.PageSize);
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new
{
venues.CurrentPage,
venues.PageSize,
venues.TotalCount,
venues.TotalPages
}));
return Ok(new PagedResponse<IEnumerable<VenueDto>>(_mapper.Map<IEnumerable<VenueDto>>(venueEntities), paginationMetadata));
return Ok(venues);
}
[HttpGet("{id}")]
public async Task<ActionResult<VenueDto>> GetVenue(int id)
public async Task<ActionResult> GetVenueById(int id)
{
var venue = await _venuesRepository.GetVenueAsync(id);
if (venue == null)
var venue = await _sender.Send(new GetVenueByIdQuery
{
return NotFound();
}
VenueId = id
});
return Ok(new Response<VenueDto>(_mapper.Map<VenueDto>(venue)));
return Ok(venue);
}
}
}