Class CustomerController

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

@RestController @RequestMapping("/api/customers") public class CustomerController extends Object
Controlador REST para la gestión de clientes (Capa de Presentación).

Expone endpoints HTTP para realizar operaciones CRUD sobre clientes y gestionar su estado (activo, inactivo, suspendido).

Arquitectura de 3 Capas

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

    • CustomerController

      @Autowired public CustomerController(CustomerService customerService)
  • Method Details

    • getAllCustomers

      @GetMapping public org.springframework.http.ResponseEntity<List<Customer>> getAllCustomers()
      Obtiene todos los clientes.
      Returns:
      lista de clientes con código 200 OK
    • getCustomerById

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

      @GetMapping("/email/{email}") public org.springframework.http.ResponseEntity<Customer> getCustomerByEmail(@PathVariable String email)
      Busca un cliente por su email.
      Parameters:
      email - el email del cliente
      Returns:
      el cliente con código 200 OK, o 404 Not Found si no existe
    • getActiveCustomers

      @GetMapping("/active") public org.springframework.http.ResponseEntity<List<Customer>> getActiveCustomers()
      Obtiene clientes activos.
      Returns:
      lista de clientes con estado ACTIVE
    • getCustomersByStatus

      @GetMapping("/status/{status}") public org.springframework.http.ResponseEntity<List<Customer>> getCustomersByStatus(@PathVariable Customer.CustomerStatus status)
      Obtiene clientes por estado.
      Parameters:
      status - el estado del cliente (ACTIVE, INACTIVE, SUSPENDED)
      Returns:
      lista de clientes con ese estado
    • searchCustomers

      @GetMapping("/search") public org.springframework.http.ResponseEntity<List<Customer>> searchCustomers(@RequestParam String searchTerm)
      Busca clientes por nombre o apellido.
      Parameters:
      searchTerm - texto a buscar
      Returns:
      lista de clientes que coinciden
    • createCustomer

      @PostMapping public org.springframework.http.ResponseEntity<Customer> createCustomer(@Valid @RequestBody @Valid Customer customer)
      Crea un nuevo cliente.
      Parameters:
      customer - el cliente a crear
      Returns:
      el cliente creado con código 201 Created
    • updateCustomer

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

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

      @PostMapping("/{id}/suspend") public org.springframework.http.ResponseEntity<Customer> suspendCustomer(@PathVariable Long id)
      Suspende un cliente.
      Parameters:
      id - el ID del cliente a suspender
      Returns:
      el cliente suspendido con código 200 OK
    • activateCustomer

      @PostMapping("/{id}/activate") public org.springframework.http.ResponseEntity<Customer> activateCustomer(@PathVariable Long id)
      Activa un cliente.
      Parameters:
      id - el ID del cliente a activar
      Returns:
      el cliente activado con código 200 OK
    • deleteCustomer

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

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

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

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