52 lines
1.9 KiB
C#
52 lines
1.9 KiB
C#
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<List<RideItemCount>> 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<List<RideVariance>> GetVariancesByRideAsync(Guid rideId)
|
|
=> await db.RideVariances
|
|
.Include(v => v.Item)
|
|
.Include(v => v.ResolvedBy)
|
|
.Where(v => v.FK_RideId == rideId)
|
|
.ToListAsync();
|
|
|
|
public async Task<RideVariance?> 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<bool> 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<RideCloseSummary?> GetCloseSummaryByRideAsync(Guid rideId)
|
|
=> await db.RideCloseSummaries
|
|
.FirstOrDefaultAsync(s => s.FK_RideId == rideId);
|
|
|
|
public async Task<decimal> GetCashCollectedByRideAsync(Guid rideId)
|
|
=> await db.Payments
|
|
.Where(p => p.Sale.FK_RideId == rideId && p.Method == PaymentMethod.Cash)
|
|
.SumAsync(p => p.Amount);
|
|
}
|