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 GetVenueAsync(int venueId) { return await _context.Venues.Where(v => v.Id == venueId).FirstOrDefaultAsync(); } public async Task<(IEnumerable, PaginationMetadata)> GetVenuesAsync(int pageNumber, int pageSize) { var collection = _context.Venues as IQueryable; 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); } } }