diff --git a/backend/src/main/java/com/printcalculator/controller/admin/AdminOrderController.java b/backend/src/main/java/com/printcalculator/controller/admin/AdminOrderController.java index 9e8e134..764940d 100644 --- a/backend/src/main/java/com/printcalculator/controller/admin/AdminOrderController.java +++ b/backend/src/main/java/com/printcalculator/controller/admin/AdminOrderController.java @@ -101,13 +101,16 @@ public class AdminOrderController { @PostMapping("/{orderId}/payments/confirm") @Transactional - public ResponseEntity confirmPayment( + public ResponseEntity updatePaymentMethod( @PathVariable UUID orderId, @RequestBody(required = false) Map payload ) { getOrderOrThrow(orderId); String method = payload != null ? payload.get("method") : null; - paymentService.confirmPayment(orderId, method); + if (method == null || method.isBlank()) { + throw new ResponseStatusException(BAD_REQUEST, "Payment method is required"); + } + paymentService.updatePaymentMethod(orderId, method); return ResponseEntity.ok(toOrderDto(getOrderOrThrow(orderId))); } diff --git a/backend/src/main/java/com/printcalculator/service/PaymentService.java b/backend/src/main/java/com/printcalculator/service/PaymentService.java index 5087bb6..23b907c 100644 --- a/backend/src/main/java/com/printcalculator/service/PaymentService.java +++ b/backend/src/main/java/com/printcalculator/service/PaymentService.java @@ -98,4 +98,20 @@ public class PaymentService { return payment; } + + @Transactional + public Payment updatePaymentMethod(UUID orderId, String method) { + if (method == null || method.isBlank()) { + throw new IllegalArgumentException("Payment method is required"); + } + + Order order = orderRepo.findById(orderId) + .orElseThrow(() -> new RuntimeException("Order not found with id " + orderId)); + + Payment payment = paymentRepo.findByOrder_Id(orderId) + .orElseGet(() -> getOrCreatePaymentForOrder(order, "OTHER")); + + payment.setMethod(method.trim().toUpperCase()); + return paymentRepo.save(payment); + } } diff --git a/frontend/src/app/features/admin/pages/admin-dashboard.component.html b/frontend/src/app/features/admin/pages/admin-dashboard.component.html index e6ad060..d3dc0e8 100644 --- a/frontend/src/app/features/admin/pages/admin-dashboard.component.html +++ b/frontend/src/app/features/admin/pages/admin-dashboard.component.html @@ -163,12 +163,10 @@ diff --git a/frontend/src/app/features/admin/pages/admin-dashboard.component.ts b/frontend/src/app/features/admin/pages/admin-dashboard.component.ts index 8a3c23e..74dbd4c 100644 --- a/frontend/src/app/features/admin/pages/admin-dashboard.component.ts +++ b/frontend/src/app/features/admin/pages/admin-dashboard.component.ts @@ -132,14 +132,14 @@ export class AdminDashboardComponent implements OnInit { }); } - confirmPayment(): void { + updatePaymentMethod(): void { if (!this.selectedOrder || this.confirmingPayment) { return; } this.confirmingPayment = true; this.adminOrdersService - .confirmPayment(this.selectedOrder.id, this.selectedPaymentMethod) + .updatePaymentMethod(this.selectedOrder.id, this.selectedPaymentMethod) .subscribe({ next: (updatedOrder) => { this.confirmingPayment = false; @@ -147,7 +147,7 @@ export class AdminDashboardComponent implements OnInit { }, error: () => { this.confirmingPayment = false; - this.errorMessage = 'Conferma pagamento non riuscita.'; + this.errorMessage = 'Aggiornamento metodo pagamento non riuscito.'; }, }); } diff --git a/frontend/src/app/features/admin/services/admin-orders.service.ts b/frontend/src/app/features/admin/services/admin-orders.service.ts index 58f37ad..39225fe 100644 --- a/frontend/src/app/features/admin/services/admin-orders.service.ts +++ b/frontend/src/app/features/admin/services/admin-orders.service.ts @@ -59,7 +59,7 @@ export class AdminOrdersService { }); } - confirmPayment(orderId: string, method: string): Observable { + updatePaymentMethod(orderId: string, method: string): Observable { return this.http.post( `${this.baseUrl}/${orderId}/payments/confirm`, { method },