Package com.proyecto.jpa.controller
Class CustomerController
java.lang.Object
com.proyecto.jpa.controller.CustomerController
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.springframework.http.ResponseEntity<Customer>activateCustomer(Long id) Activa un cliente.org.springframework.http.ResponseEntity<Long>Cuenta el número total de clientes.org.springframework.http.ResponseEntity<Customer>createCustomer(@Valid Customer customer) Crea un nuevo cliente.org.springframework.http.ResponseEntity<Void>deleteCustomer(Long id) Elimina un cliente por su ID.Obtiene clientes activos.Obtiene todos los clientes.org.springframework.http.ResponseEntity<Customer>getCustomerByEmail(String email) Busca un cliente por su email.org.springframework.http.ResponseEntity<Customer>getCustomerById(Long id) Obtiene un cliente por su ID.Obtiene clientes por estado.searchCustomers(String searchTerm) Busca clientes por nombre o apellido.org.springframework.http.ResponseEntity<Customer>suspendCustomer(Long id) Suspende un cliente.org.springframework.http.ResponseEntity<Customer>updateCustomer(Long id, @Valid Customer customer) Actualiza un cliente existente.org.springframework.http.ResponseEntity<Customer>updateStatus(Long id, Customer.CustomerStatus status) Actualiza el estado de un cliente.
-
Constructor Details
-
CustomerController
-
-
Method Details
-
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 actualizarcustomer- 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 clientestatus- 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
Cuenta el número total de clientes.- Returns:
- el número de clientes con código 200 OK
-