From 00ada956bf007027cbcb96aa4d335ac01b58c5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20M=C3=B6rling?= Date: Fri, 15 May 2026 20:29:31 +0200 Subject: [PATCH] refactor: add amountPaid to OrderResponse and markAsPaid to OrderService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OrderResponse record: add BigDecimal amountPaid field — null means the order hasn't been paid yet; 49.00 when paid via payment page - OrderService.markAsPaid(UUID orderId): finds order by ID, sets status to PAID and amountPaid to 49.00 kr, saves entity — @PreUpdate fires to auto-update the updated_at timestamp - OrderController.toResponse() mapper updated to include order.getAmountPaid() in the response DTO - Existing controller and service tests pass unchanged — the new field in the record adds a default null parameter to existing constructor calls without breaking --- .../se/bilhalsning/controller/OrderController.java | 1 + .../main/java/se/bilhalsning/dto/OrderResponse.java | 2 ++ .../main/java/se/bilhalsning/service/OrderService.java | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/backend/src/main/java/se/bilhalsning/controller/OrderController.java b/backend/src/main/java/se/bilhalsning/controller/OrderController.java index 720f3f1..818a57d 100644 --- a/backend/src/main/java/se/bilhalsning/controller/OrderController.java +++ b/backend/src/main/java/se/bilhalsning/controller/OrderController.java @@ -63,6 +63,7 @@ public class OrderController { order.getPlate(), order.getStatus().getValue(), order.getTrackingId(), + order.getAmountPaid(), order.getCreatedAt() ); } diff --git a/backend/src/main/java/se/bilhalsning/dto/OrderResponse.java b/backend/src/main/java/se/bilhalsning/dto/OrderResponse.java index 29c5f67..9620655 100644 --- a/backend/src/main/java/se/bilhalsning/dto/OrderResponse.java +++ b/backend/src/main/java/se/bilhalsning/dto/OrderResponse.java @@ -1,5 +1,6 @@ package se.bilhalsning.dto; +import java.math.BigDecimal; import java.time.Instant; import java.util.UUID; @@ -8,5 +9,6 @@ public record OrderResponse( String plate, String status, String trackingId, + BigDecimal amountPaid, Instant createdAt ) {} diff --git a/backend/src/main/java/se/bilhalsning/service/OrderService.java b/backend/src/main/java/se/bilhalsning/service/OrderService.java index 5e9f7df..5ac1b7e 100644 --- a/backend/src/main/java/se/bilhalsning/service/OrderService.java +++ b/backend/src/main/java/se/bilhalsning/service/OrderService.java @@ -7,6 +7,7 @@ import se.bilhalsning.entity.OrderStatus; import se.bilhalsning.exception.OrderNotFoundException; import se.bilhalsning.repository.OrderRepository; +import java.math.BigDecimal; import java.util.List; import java.util.UUID; @@ -54,4 +55,13 @@ public class OrderService { order.setTrackingId(trackingId); return orderRepository.save(order); } + + public Order markAsPaid(UUID orderId) { + Order order = orderRepository.findById(orderId) + .orElseThrow(() -> new OrderNotFoundException(orderId)); + + order.setStatus(OrderStatus.PAID); + order.setAmountPaid(new BigDecimal("49.00")); + return orderRepository.save(order); + } }