refactor: add amountPaid to OrderResponse and markAsPaid to OrderService

- 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
This commit is contained in:
Joakim Mörling 2026-05-15 20:29:31 +02:00
parent 0f34d29a2a
commit 00ada956bf
3 changed files with 13 additions and 0 deletions

View file

@ -63,6 +63,7 @@ public class OrderController {
order.getPlate(),
order.getStatus().getValue(),
order.getTrackingId(),
order.getAmountPaid(),
order.getCreatedAt()
);
}

View file

@ -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
) {}

View file

@ -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);
}
}