using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Reconciliation; public class ReconciliationRepository(AppDBContext db) : IReconciliationRepository { public async Task AddItemCountAsync(RideItemCount count) => await db.RideItemCounts.AddAsync(count); public async Task> GetItemCountsByRideAsync(Guid rideId) => await db.RideItemCounts .Where(c => c.FK_RideId == rideId) .ToListAsync(); public async Task AddVarianceAsync(RideVariance variance) => await db.RideVariances.AddAsync(variance); public async Task> GetVariancesByRideAsync(Guid rideId) => await db.RideVariances .Include(v => v.Item) .Include(v => v.ResolvedBy) .Where(v => v.FK_RideId == rideId) .ToListAsync(); public async Task GetVarianceByIdAsync(Guid id) => await db.RideVariances .Include(v => v.Item) .Include(v => v.ResolvedBy) .FirstOrDefaultAsync(v => v.Id == id); public void UpdateVariance(RideVariance variance) => db.RideVariances.Update(variance); public async Task HasPendingVariancesAsync(Guid rideId) => await db.RideVariances .AnyAsync(v => v.FK_RideId == rideId && v.Status == VarianceStatus.Pending); public async Task AddCloseSummaryAsync(RideCloseSummary summary) => await db.RideCloseSummaries.AddAsync(summary); public async Task GetCloseSummaryByRideAsync(Guid rideId) => await db.RideCloseSummaries .FirstOrDefaultAsync(s => s.FK_RideId == rideId); public async Task GetCashCollectedByRideAsync(Guid rideId) => await db.Payments .Where(p => p.Sale.FK_RideId == rideId && p.Method == PaymentMethod.Cash) .SumAsync(p => p.Amount); }