@@ -37,9 +37,8 @@ public class OrderController {
3737 "id" , "userId" , "status" , "currency" , "totalAmount" , "createdAt" , "updatedAt"
3838 );
3939
40- @ PreAuthorize ("hasRole('USER') and #userId == authentication.principal.id" )
4140 @ PostMapping ("/{userId}" )
42- public ResponseEntity <?> createOrder (@ PathVariable Long userId , @ Validated @ RequestBody CreateOrderRequest orderRequest ) {
41+ public ResponseEntity <?> createOrder (@ PathVariable Long userId , @ RequestBody CreateOrderRequest orderRequest ) {
4342 try {
4443 OrderDTO orderDTO = orderService .createOrder (userId , orderRequest );
4544 return ResponseEntity .ok (CreateOrderResponse .from (OrderViewModel .fromDTO (orderDTO )));
@@ -62,6 +61,30 @@ public ResponseEntity<?> createOrder(@PathVariable Long userId, @Validated @Requ
6261 }
6362 }
6463
64+ @ PostMapping ("/" )
65+ public ResponseEntity <?> createOrder (@ RequestBody CreateOrderRequest orderRequest ) {
66+ try {
67+ OrderDTO orderDTO = orderService .createOrder (orderRequest );
68+ return ResponseEntity .ok (CreateOrderResponse .from (OrderViewModel .fromDTO (orderDTO )));
69+ } catch (IllegalArgumentException e ) {
70+ return ResponseEntity .badRequest ()
71+ .body (CreateOrderResponse .from ("Invalid request: " + e .getMessage ()));
72+ } catch (ProductNotFoundException e ) {
73+ return ResponseEntity .badRequest ()
74+ .body (CreateOrderResponse .from ("Product not found: " + e .getMessage ()));
75+ } catch (InsufficientStockException e ) {
76+ return ResponseEntity .badRequest ()
77+ .body (CreateOrderResponse .from ("Insufficient stock: " + e .getMessage ()));
78+ } catch (OrderValidationException e ) {
79+ return ResponseEntity .badRequest ()
80+ .body (CreateOrderResponse .from (e .getMessage ()));
81+ } catch (Exception e ) {
82+ log .error ("Error creating order" , e );
83+ return ResponseEntity .internalServerError ()
84+ .body (CreateOrderResponse .from ("Error creating order: " + e .getMessage ()));
85+ }
86+ }
87+
6588 @ PreAuthorize ("hasRole('USER') and #userId == authentication.principal.id or hasRole('ADMIN')" )
6689 @ GetMapping ("/user/{userId}" )
6790 public ResponseEntity <?> getOrdersByUserId (
0 commit comments