37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Venues.DbContexts;
|
|
using Venues.Entities;
|
|
|
|
namespace Venues.Services
|
|
{
|
|
public class VenuesRepository : IVenuesRepository
|
|
{
|
|
private readonly MlbGameDayContext _context;
|
|
|
|
public VenuesRepository(MlbGameDayContext context)
|
|
{
|
|
_context = context ?? throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
public async Task<Venue?> GetVenueAsync(int venueId)
|
|
{
|
|
return await _context.Venues.Where(v => v.Id == venueId).FirstOrDefaultAsync();
|
|
}
|
|
|
|
public async Task<(IEnumerable<Venue>, PaginationMetadata)> GetVenuesAsync(int pageNumber, int pageSize)
|
|
{
|
|
var collection = _context.Venues as IQueryable<Venue>;
|
|
var totalItemCount = await collection.CountAsync();
|
|
var paginationMetadata = new PaginationMetadata(totalItemCount, pageSize, pageNumber);
|
|
var collectionToReturn = await collection.OrderBy(v => v.Name)
|
|
.Skip(pageSize * (pageNumber -1))
|
|
.Take(pageSize)
|
|
.ToListAsync();
|
|
|
|
return (collectionToReturn, paginationMetadata);
|
|
}
|
|
}
|
|
}
|
|
|