Package com.proyecto.jpa.controller
Class OrderItemController
java.lang.Object
com.proyecto.jpa.controller.OrderItemController
Controlador REST para la gestión de items de pedidos (Capa de Presentación).
Expone endpoints HTTP para realizar operaciones CRUD sobre items de pedidos y consultar items por pedido o producto.
Arquitectura de 3 Capas
OrderItemController (Capa de Presentación) ← Esta clase
↓
OrderItemService (Capa de Negocio)
↓
OrderItemRepository (Capa de Datos)
Endpoints Disponibles
- GET /api/order-items - Obtener todos los items
- GET /api/order-items/{id} - Obtener un item por ID
- GET /api/order-items/order/{orderId} - Obtener items de un pedido
- GET /api/order-items/product/{productId} - Obtener items con un producto
- POST /api/order-items - Crear un nuevo item
- PUT /api/order-items/{id} - Actualizar un item
- PATCH /api/order-items/{id}/quantity - Actualizar cantidad
- DELETE /api/order-items/{id} - Eliminar un item
Ejemplo de Uso
// Obtener items de un pedido
GET /api/order-items/order/1
// Crear un nuevo item
POST /api/order-items
{
"order": { "id": 1 },
"product": { "id": 5 },
"quantity": 2,
"unitPrice": 299.99
}
// Actualizar cantidad
PATCH /api/order-items/1/quantity?newQuantity=5
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Proyecto JPA
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionOrderItemController(OrderItemService orderItemService) Constructor con inyección de dependencias. -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.http.ResponseEntity<Long>Cuenta el número total de items de pedidos.org.springframework.http.ResponseEntity<Long>countOrderItemsByOrder(Long orderId) Cuenta el número de items en un pedido específico.org.springframework.http.ResponseEntity<OrderItem>createOrderItem(@Valid OrderItem orderItem) Crea un nuevo item de pedido.org.springframework.http.ResponseEntity<Void>deleteOrderItem(Long id) Elimina un item de pedido por su ID.Obtiene todos los items de pedidos.org.springframework.http.ResponseEntity<OrderItem>getOrderItemById(Long id) Obtiene un item de pedido por su ID.getOrderItemsByOrder(Long orderId) Obtiene todos los items de un pedido específico.getOrderItemsByProduct(Long productId) Obtiene todos los items que contienen un producto específico.org.springframework.http.ResponseEntity<OrderItem>updateOrderItem(Long id, @Valid OrderItem orderItem) Actualiza un item de pedido existente.org.springframework.http.ResponseEntity<OrderItem>updateQuantity(Long id, Integer newQuantity) Actualiza la cantidad de un item de pedido.
-
Constructor Details
-
OrderItemController
Constructor con inyección de dependencias.- Parameters:
orderItemService- servicio de items de pedidos
-
-
Method Details
-
getAllOrderItems
Obtiene todos los items de pedidos.- Returns:
- lista de items con código 200 OK
-
getOrderItemById
@GetMapping("/{id}") public org.springframework.http.ResponseEntity<OrderItem> getOrderItemById(@PathVariable Long id) Obtiene un item de pedido por su ID.- Parameters:
id- el ID del item- Returns:
- el item con código 200 OK, o 404 Not Found si no existe
-
getOrderItemsByOrder
@GetMapping("/order/{orderId}") public org.springframework.http.ResponseEntity<List<OrderItem>> getOrderItemsByOrder(@PathVariable Long orderId) Obtiene todos los items de un pedido específico.- Parameters:
orderId- el ID del pedido- Returns:
- lista de items del pedido con código 200 OK
-
getOrderItemsByProduct
@GetMapping("/product/{productId}") public org.springframework.http.ResponseEntity<List<OrderItem>> getOrderItemsByProduct(@PathVariable Long productId) Obtiene todos los items que contienen un producto específico.Útil para ver en qué pedidos se ha incluido un producto.
- Parameters:
productId- el ID del producto- Returns:
- lista de items con ese producto con código 200 OK
-
createOrderItem
@PostMapping public org.springframework.http.ResponseEntity<OrderItem> createOrderItem(@Valid @RequestBody @Valid OrderItem orderItem) Crea un nuevo item de pedido.El subtotal se calcula automáticamente y el total del pedido se actualiza.
- Parameters:
orderItem- el item a crear- Returns:
- el item creado con código 201 Created, o 400 Bad Request si hay errores
-
updateOrderItem
@PutMapping("/{id}") public org.springframework.http.ResponseEntity<OrderItem> updateOrderItem(@PathVariable Long id, @Valid @RequestBody @Valid OrderItem orderItem) Actualiza un item de pedido existente.El subtotal se recalcula automáticamente y el total del pedido se actualiza.
- Parameters:
id- el ID del item a actualizarorderItem- los nuevos datos del item- Returns:
- el item actualizado con código 200 OK, o 404 Not Found si no existe
-
updateQuantity
@PatchMapping("/{id}/quantity") public org.springframework.http.ResponseEntity<OrderItem> updateQuantity(@PathVariable Long id, @RequestParam Integer newQuantity) Actualiza la cantidad de un item de pedido.Valida que haya stock suficiente, recalcula el subtotal y actualiza el total del pedido automáticamente.
- Parameters:
id- el ID del itemnewQuantity- la nueva cantidad- Returns:
- el item actualizado con código 200 OK, o 400 Bad Request si hay errores
-
deleteOrderItem
@DeleteMapping("/{id}") public org.springframework.http.ResponseEntity<Void> deleteOrderItem(@PathVariable Long id) Elimina un item de pedido por su ID.Al eliminar el item, el total del pedido se actualiza automáticamente.
- Parameters:
id- el ID del item a eliminar- Returns:
- código 204 No Content si se eliminó, o 404 Not Found si no existe
-
countOrderItems
Cuenta el número total de items de pedidos.- Returns:
- el número de items con código 200 OK
-
countOrderItemsByOrder
@GetMapping("/order/{orderId}/count") public org.springframework.http.ResponseEntity<Long> countOrderItemsByOrder(@PathVariable Long orderId) Cuenta el número de items en un pedido específico.- Parameters:
orderId- el ID del pedido- Returns:
- el número de items en ese pedido con código 200 OK
-