Class OrderController

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

@RestController @RequestMapping("/api/orders") public class OrderController extends Object
Controlador REST para la gestión de pedidos (Capa de Presentación).

Expone endpoints HTTP para realizar operaciones CRUD sobre pedidos, gestionar su estado y consultar pedidos por cliente.

Arquitectura de 3 Capas

 OrderController (Capa de Presentación) ← Esta clase
         ↓
 OrderService (Capa de Negocio)
         ↓
 OrderRepository (Capa de Datos)
 
Since:
1.0.0
Version:
1.0.0
Author:
Proyecto JPA
See Also:
  • Constructor Details

    • OrderController

      @Autowired public OrderController(OrderService orderService)
  • Method Details

    • getAllOrders

      @GetMapping public org.springframework.http.ResponseEntity<List<Order>> getAllOrders()
      Obtiene todos los pedidos.
      Returns:
      lista de pedidos con código 200 OK
    • getOrderById

      @GetMapping("/{id}") public org.springframework.http.ResponseEntity<Order> getOrderById(@PathVariable Long id)
      Obtiene un pedido por su ID.
      Parameters:
      id - el ID del pedido
      Returns:
      el pedido con código 200 OK, o 404 Not Found si no existe
    • getOrdersByCustomer

      @GetMapping("/customer/{customerId}") public org.springframework.http.ResponseEntity<List<Order>> getOrdersByCustomer(@PathVariable Long customerId)
      Obtiene pedidos por cliente.
      Parameters:
      customerId - el ID del cliente
      Returns:
      lista de pedidos del cliente
    • getOrdersWithItemsByCustomer

      @GetMapping("/customer/{customerId}/with-items") public org.springframework.http.ResponseEntity<List<Order>> getOrdersWithItemsByCustomer(@PathVariable Long customerId)
      Obtiene pedidos con sus items por cliente (optimizado con JOIN FETCH).
      Parameters:
      customerId - el ID del cliente
      Returns:
      lista de pedidos con items precargados
    • getOrdersByStatus

      @GetMapping("/status/{status}") public org.springframework.http.ResponseEntity<List<Order>> getOrdersByStatus(@PathVariable Order.OrderStatus status)
      Obtiene pedidos por estado.
      Parameters:
      status - el estado del pedido
      Returns:
      lista de pedidos con ese estado
    • getOrderByOrderNumber

      @GetMapping("/number/{orderNumber}") public org.springframework.http.ResponseEntity<Order> getOrderByOrderNumber(@PathVariable String orderNumber)
      Busca un pedido por su número de orden.
      Parameters:
      orderNumber - el número de orden
      Returns:
      el pedido con código 200 OK, o 404 Not Found si no existe
    • createOrder

      @PostMapping public org.springframework.http.ResponseEntity<Order> createOrder(@Valid @RequestBody @Valid Order order)
      Crea un nuevo pedido.
      Parameters:
      order - el pedido a crear
      Returns:
      el pedido creado con código 201 Created
    • updateOrder

      @PutMapping("/{id}") public org.springframework.http.ResponseEntity<Order> updateOrder(@PathVariable Long id, @Valid @RequestBody @Valid Order order)
      Actualiza un pedido existente.
      Parameters:
      id - el ID del pedido a actualizar
      order - los nuevos datos del pedido
      Returns:
      el pedido actualizado con código 200 OK
    • updateOrderStatus

      @PatchMapping("/{id}/status") public org.springframework.http.ResponseEntity<Order> updateOrderStatus(@PathVariable Long id, @RequestParam Order.OrderStatus status)
      Actualiza el estado de un pedido.
      Parameters:
      id - el ID del pedido
      status - el nuevo estado
      Returns:
      el pedido actualizado con código 200 OK
    • cancelOrder

      @PostMapping("/{id}/cancel") public org.springframework.http.ResponseEntity<Order> cancelOrder(@PathVariable Long id)
      Cancela un pedido.
      Parameters:
      id - el ID del pedido a cancelar
      Returns:
      el pedido cancelado con código 200 OK
    • deleteOrder

      @DeleteMapping("/{id}") public org.springframework.http.ResponseEntity<Void> deleteOrder(@PathVariable Long id)
      Elimina un pedido por su ID.

      Operación en Cascada: Al eliminar el pedido, todos sus items asociados se eliminarán automáticamente.

      Parameters:
      id - el ID del pedido a eliminar
      Returns:
      código 204 No Content si se eliminó
    • countOrders

      @GetMapping("/count") public org.springframework.http.ResponseEntity<Long> countOrders()
      Cuenta el número total de pedidos.
      Returns:
      el número de pedidos con código 200 OK