using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.LoadingEvent; public class LoadingSheetRepository(AppDBContext context) : ILoadingSheetRepository { public async Task GetByIdAsync(Guid id) => await context.LoadingSheets .Include(s => s.Items).ThenInclude(i => i.Item) .Include(s => s.Items).ThenInclude(i => i.Warehouse) .Include(s => s.Orders) .FirstOrDefaultAsync(s => s.Id == id); public async Task GetActiveByRideIdAsync(Guid rideId) => await context.LoadingSheets .FirstOrDefaultAsync(s => s.FK_RideId == rideId && s.Status == LoadingSheetStatus.Planned); public async Task> GetAllAsync(Guid? rideId, LoadingSheetStatus? status, int page, int pageSize) => await context.LoadingSheets .Include(s => s.Items).ThenInclude(i => i.Item) .Include(s => s.Items).ThenInclude(i => i.Warehouse) .Include(s => s.Orders) .Where(s => (rideId == null || s.FK_RideId == rideId) && (status == null || s.Status == status)) .OrderByDescending(s => s.CreatedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(); public async Task GetCountAsync(Guid? rideId, LoadingSheetStatus? status) => await context.LoadingSheets .CountAsync(s => (rideId == null || s.FK_RideId == rideId) && (status == null || s.Status == status)); public async Task AddAsync(LoadingSheet sheet) => await context.LoadingSheets.AddAsync(sheet); public void Update(LoadingSheet sheet) => context.LoadingSheets.Update(sheet); public void RemoveItems(IEnumerable items) => context.LoadingSheetItems.RemoveRange(items); public async Task AddItemsAsync(IEnumerable items) => await context.LoadingSheetItems.AddRangeAsync(items); }