using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Payment; public class PaymentRepository(AppDBContext context) : IPaymentRepository { public async Task GetByIdAsync(Guid id) => await context.Payments.FirstOrDefaultAsync(p => p.Id == id && p.IsActive); public async Task> GetAllAsync(Guid? storeId, Guid? saleId, int page, int pageSize) => await context.Payments .Where(p => p.IsActive && (storeId == null || p.FK_StoreId == storeId) && (saleId == null || p.FK_SaleId == saleId)) .OrderByDescending(p => p.CollectedAt) .Skip((page - 1) * pageSize) .Take(pageSize) .ToListAsync(); public async Task GetCountAsync(Guid? storeId, Guid? saleId) => await context.Payments .Where(p => p.IsActive && (storeId == null || p.FK_StoreId == storeId) && (saleId == null || p.FK_SaleId == saleId)) .CountAsync(); public async Task> GetBySaleIdAsync(Guid saleId) => await context.Payments .Where(p => p.FK_SaleId == saleId && p.IsActive) .OrderBy(p => p.CollectedAt) .ToListAsync(); public async Task AddAsync(Models.Payment payment) => await context.Payments.AddAsync(payment); }