46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using Distribution.Data;
|
|
using Distribution.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Distribution.Features.Sale;
|
|
|
|
public class SaleRepository(AppDBContext context) : ISaleRepository
|
|
{
|
|
public async Task<Models.Sale?> GetByIdAsync(Guid id) =>
|
|
await context.Sales.FindAsync(id);
|
|
|
|
public async Task<List<Models.Sale>> GetAllAsync(Guid? rideId, IEnumerable<Guid>? 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<int> GetCountAsync(Guid? rideId, IEnumerable<Guid>? storeIds) =>
|
|
await context.Sales
|
|
.CountAsync(s => s.IsActive &&
|
|
(rideId == null || s.FK_RideId == rideId) &&
|
|
(storeIds == null || storeIds.Contains(s.FK_StoreId)));
|
|
|
|
public async Task<List<Models.Sale>> 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<Models.Order?> GetOrderBySaleIdAsync(Guid saleId) =>
|
|
await context.Orders.FirstOrDefaultAsync(o => o.FK_SaleId == saleId && o.IsActive);
|
|
}
|