Class OrderItemController

java.lang.Object
com.proyecto.jpa.controller.OrderItemController

@RestController @RequestMapping("/api/order-items") public class OrderItemController extends Object
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 Details

    • OrderItemController

      @Autowired public OrderItemController(OrderItemService orderItemService)
      Constructor con inyección de dependencias.
      Parameters:
      orderItemService - servicio de items de pedidos
  • Method Details

    • getAllOrderItems

      @GetMapping public org.springframework.http.ResponseEntity<List<OrderItem>> 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 actualizar
      orderItem - 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 item
      newQuantity - 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

      @GetMapping("/count") public org.springframework.http.ResponseEntity<Long> 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