using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.DeliveryRide; public class DeliveryTaskRepository(AppDBContext context) : IDeliveryTaskRepository { public async Task GetByIdAsync(Guid id) => await context.DeliveryTasks .Include(t => t.ShopPO) .ThenInclude(o => o.Store) .Include(t => t.ShopPO) .ThenInclude(o => o.Items.Where(i => i.IsActive)) .ThenInclude(i => i.Item) .FirstOrDefaultAsync(t => t.Id == id); public async Task> GetByRideIdAsync(Guid rideId) => await context.DeliveryTasks .Include(t => t.ShopPO) .ThenInclude(o => o.Store) .Include(t => t.ShopPO) .ThenInclude(o => o.Items.Where(i => i.IsActive)) .ThenInclude(i => i.Item) .Where(t => t.FK_RideId == rideId) .OrderBy(t => t.Sequence) .ToListAsync(); public async Task ExistsForOrderAndRideAsync(Guid shopPOId, Guid rideId) => await context.DeliveryTasks .AnyAsync(t => t.FK_ShopPOId == shopPOId && t.FK_RideId == rideId); public async Task AddAsync(DeliveryTask task) => await context.DeliveryTasks.AddAsync(task); public void Update(DeliveryTask task) => context.DeliveryTasks.Update(task); }