using Microsoft.AspNetCore.Mvc; namespace Distribution.Features.Payment; [ApiController] [Route("api/payments")] public class FlatPaymentController(PaymentService service) : ControllerBase { [HttpGet] public async Task GetAll( [FromQuery] Guid? storeId, [FromQuery] Guid? saleId, [FromQuery] int page = 1, [FromQuery] int pageSize = 20) { var result = await service.GetAllAsync(storeId, saleId, page, pageSize); return Ok(result); } [HttpGet("{id:guid}")] public async Task GetById(Guid id) { var result = await service.GetByIdAsync(id); return result is null ? NotFound() : Ok(result); } [HttpPost] public async Task Create(CreateFlatPaymentRequest request, CancellationToken ct) { try { var inner = new CreatePaymentRequest(request.Amount, request.Method, request.CollectedByUserId); var result = await service.CreateAsync(request.SaleId, inner, ct); return result is null ? NotFound(new { error = "Sale not found or access denied" }) : Ok(result); } catch (InvalidOperationException ex) { return BadRequest(new { error = ex.Message }); } } }