Package com.proyecto.jpa.service
Class CustomerService
java.lang.Object
com.proyecto.jpa.service.CustomerService
Servicio para la gestión de clientes (Capa de Negocio).
Implementa la lógica de negocio relacionada con los clientes, incluyendo validaciones de datos y gestión del estado del cliente.
Arquitectura de 3 Capas
CustomerController (Capa de Presentación)
↓
CustomerService (Capa de Negocio) ← Esta clase
↓
CustomerRepository (Capa de Datos)
Operaciones en Cascada
Al eliminar un cliente, todos sus pedidos asociados se eliminan automáticamente gracias a la configuración de cascada en la entidad Customer.
- Since:
- 1.0.0
- Version:
- 1.0.0
- Author:
- Proyecto JPA
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionCustomerService(CustomerRepository customerRepository) Constructor con inyección de dependencias. -
Method Summary
Modifier and TypeMethodDescriptionactivateCustomer(Long customerId) Activa un cliente (cambia su estado a ACTIVE).longcount()Cuenta el número total de clientes.voiddeleteById(Long id) Elimina un cliente por su ID.booleanexistsByEmail(String email) Verifica si existe un cliente con el email dado.Busca clientes activos.findAll()Obtiene todos los clientes del sistema.findByEmail(String email) Busca un cliente por su email.Busca un cliente por su ID.findByStatus(Customer.CustomerStatus status) Busca clientes por estado.Crea o actualiza un cliente.searchByName(String searchTerm) Busca clientes por nombre o apellido.suspendCustomer(Long customerId) Suspende un cliente (cambia su estado a SUSPENDED).updateStatus(Long customerId, Customer.CustomerStatus newStatus) Actualiza el estado de un cliente.
-
Constructor Details
-
CustomerService
Constructor con inyección de dependencias.- Parameters:
customerRepository- repositorio de clientes
-
-
Method Details
-
findAll
Obtiene todos los clientes del sistema.- Returns:
- lista de todos los clientes
-
findById
Busca un cliente por su ID.- Parameters:
id- el ID del cliente- Returns:
- un Optional con el cliente si existe
-
findByEmail
Busca un cliente por su email.- Parameters:
email- el email del cliente- Returns:
- un Optional con el cliente si existe
-
findByStatus
Busca clientes por estado.- Parameters:
status- el estado del cliente- Returns:
- lista de clientes con ese estado
-
findActiveCustomers
Busca clientes activos.- Returns:
- lista de clientes con estado ACTIVE
-
searchByName
Busca clientes por nombre o apellido.- Parameters:
searchTerm- texto a buscar- Returns:
- lista de clientes que coinciden
-
existsByEmail
Verifica si existe un cliente con el email dado.- Parameters:
email- el email a verificar- Returns:
- true si existe, false en caso contrario
-
save
Crea o actualiza un cliente.Valida que el cliente tenga datos obligatorios y email único.
- Parameters:
customer- el cliente a guardar- Returns:
- el cliente guardado
- Throws:
IllegalArgumentException- si los datos son inválidos
-
updateStatus
Actualiza el estado de un cliente.- Parameters:
customerId- el ID del clientenewStatus- el nuevo estado- Returns:
- el cliente actualizado
- Throws:
IllegalArgumentException- si el cliente no existe
-
suspendCustomer
Suspende un cliente (cambia su estado a SUSPENDED).- Parameters:
customerId- el ID del cliente a suspender- Returns:
- el cliente suspendido
-
activateCustomer
Activa un cliente (cambia su estado a ACTIVE).- Parameters:
customerId- el ID del cliente a activar- Returns:
- el cliente activado
-
deleteById
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- Throws:
IllegalArgumentException- si no existe un cliente con ese ID
-
count
public long count()Cuenta el número total de clientes.- Returns:
- el número total de clientes
-