package se.bilhalsning.service; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import se.bilhalsning.entity.Order; 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; @Service @RequiredArgsConstructor public class OrderService { private final OrderRepository orderRepository; public Order createOrder(UUID userId, String plate, String letterText) { Order order = new Order(); order.setUserId(userId); order.setPlate(plate.toUpperCase().trim()); order.setLetterText(letterText); order.setStatus(OrderStatus.PENDING_PAYMENT); return orderRepository.save(order); } public List getOrdersByUserId(UUID userId) { return orderRepository.findByUserIdOrderByCreatedAtDesc(userId); } public Order getOrderById(UUID id) { return orderRepository.findById(id) .orElseThrow(() -> new OrderNotFoundException(id)); } public List getAllOrders() { return orderRepository.findAllByOrderByCreatedAtDesc(); } public Order updateOrderStatus(UUID orderId, String statusString) { Order order = orderRepository.findById(orderId) .orElseThrow(() -> new OrderNotFoundException(orderId)); OrderStatus newStatus = OrderStatus.valueOf(statusString.toUpperCase()); order.setStatus(newStatus); return orderRepository.save(order); } public Order updateTracking(UUID orderId, String trackingId) { Order order = orderRepository.findById(orderId) .orElseThrow(() -> new OrderNotFoundException(orderId)); 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); } }