dc7e7a70fc
Introduced FlatPaymentController under Distribution.Features.Payment, providing GET and POST endpoints at /api/payments. Supports listing, retrieving, and creating payments with filtering and error handling. Business logic is delegated to PaymentService.
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
using Distribution.Data;
|
|
using Distribution.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Distribution.Features.Payment;
|
|
|
|
public class PaymentRepository(AppDBContext context) : IPaymentRepository
|
|
{
|
|
public async Task<Models.Payment?> GetByIdAsync(Guid id) =>
|
|
await context.Payments.FirstOrDefaultAsync(p => p.Id == id && p.IsActive);
|
|
|
|
public async Task<List<Models.Payment>> 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<int> 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<List<Models.Payment>> 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);
|
|
}
|