55 lines
1.3 KiB
C#
55 lines
1.3 KiB
C#
using System;
|
|
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.Queries;
|
|
|
|
namespace Venues.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/venues")]
|
|
public class VenuesController : ControllerBase
|
|
{
|
|
private readonly ISender _sender;
|
|
|
|
public VenuesController(ISender sender) => _sender = sender;
|
|
|
|
[HttpGet]
|
|
public async Task<ActionResult> GetVenues([FromQuery] int pageNumber, [FromQuery] int pageSize)
|
|
{
|
|
var venues = await _sender.Send(new GetVenuesQuery
|
|
{
|
|
PageNumber = pageNumber,
|
|
PageSize = pageSize
|
|
});
|
|
|
|
Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(new
|
|
{
|
|
venues.CurrentPage,
|
|
venues.PageSize,
|
|
venues.TotalCount,
|
|
venues.TotalPages
|
|
}));
|
|
|
|
return Ok(venues);
|
|
}
|
|
|
|
[HttpGet("{id}")]
|
|
public async Task<ActionResult> GetVenueById(int id)
|
|
{
|
|
var venue = await _sender.Send(new GetVenueByIdQuery
|
|
{
|
|
VenueId = id
|
|
});
|
|
|
|
return Ok(venue);
|
|
}
|
|
}
|
|
}
|
|
|