Initial commit AB#12
This commit is contained in:
56
venues/Controllers/VenuesController.cs
Normal file
56
venues/Controllers/VenuesController.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using AutoMapper;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Venues.Entities;
|
||||
using Venues.Filter;
|
||||
using Venues.Models;
|
||||
using Venues.Services;
|
||||
using Venues.Wrappers;
|
||||
|
||||
namespace Venues.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/venues")]
|
||||
public class VenuesController : ControllerBase
|
||||
{
|
||||
private readonly IVenuesRepository _venuesRepository;
|
||||
private readonly IMapper _mapper;
|
||||
const int maxVenuesPerPage = 50;
|
||||
|
||||
public VenuesController(IVenuesRepository venuesRepository, IMapper mapper)
|
||||
{
|
||||
_venuesRepository = venuesRepository ?? throw new ArgumentNullException(nameof(venuesRepository));
|
||||
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<VenueDto>>> GetVenues([FromQuery] PaginationFilter filter)
|
||||
{
|
||||
if (filter.PageSize > maxVenuesPerPage)
|
||||
{
|
||||
filter.PageSize = maxVenuesPerPage;
|
||||
}
|
||||
|
||||
var (venueEntities, paginationMetadata) = await _venuesRepository.GetVenuesAsync(filter.PageNumber, filter.PageSize);
|
||||
|
||||
return Ok(new PagedResponse<IEnumerable<VenueDto>>(_mapper.Map<IEnumerable<VenueDto>>(venueEntities), paginationMetadata));
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
public async Task<ActionResult<VenueDto>> GetVenue(int id)
|
||||
{
|
||||
var venue = await _venuesRepository.GetVenueAsync(id);
|
||||
|
||||
if (venue == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok(new Response<VenueDto>(_mapper.Map<VenueDto>(venue)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user