using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Sale; public class SaleRepository(AppDBContext context) : ISaleRepository { public async Task GetByIdAsync(Guid id) => await context.Sales.FindAsync(id); public async Task> GetAllAsync(Guid? rideId, IEnumerable? storeIds, int page, int pageSize) => await context.Sales .Where(s => s.IsActive && (rideId == null || s.FK_RideId == rideId) && (storeIds == null || storeIds.Contains(s.FK_StoreId))) .OrderByDescending(s => s.CreatedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(); public async Task GetCountAsync(Guid? rideId, IEnumerable? storeIds) => await context.Sales .CountAsync(s => s.IsActive && (rideId == null || s.FK_RideId == rideId) && (storeIds == null || storeIds.Contains(s.FK_StoreId))); public async Task> GetByStoreIdAsync(Guid storeId) => await context.Sales.Where(s => s.FK_StoreId == storeId && s.IsActive).ToListAsync(); public async Task AddAsync(Models.Sale sale) => await context.Sales.AddAsync(sale); public void Update(Models.Sale sale) => context.Sales.Update(sale); public void Remove(Models.Sale sale) { sale.IsActive = false; context.Sales.Update(sale); } public async Task GetOrderBySaleIdAsync(Guid saleId) => await context.Orders.FirstOrDefaultAsync(o => o.FK_SaleId == saleId && o.IsActive); }