Class EmpresaService

java.lang.Object
com.gestorrh.api.service.EmpresaService

@Service public class EmpresaService extends Object
Servicio encargado de la gestión integral del ciclo de vida de la entidad Empresa.

Centraliza funcionalidades críticas como el registro inicial, la gestión del perfil corporativo, la configuración de parámetros de geovallado (Sede Central) y la gestión de la seguridad de la cuenta.

Garantiza que la configuración de la empresa sea coherente para que los empleados puedan operar correctamente con los módulos de fichaje y turnos.

  • Field Details

    • empresaRepository

      private final EmpresaRepository empresaRepository
    • codificadorPassword

      private final org.springframework.security.crypto.password.PasswordEncoder codificadorPassword
  • Constructor Details

    • EmpresaService

      public EmpresaService()
  • Method Details

    • registrarEmpresa

      @Transactional public RespuestaEmpresaDTO registrarEmpresa(PeticionRegistroEmpresaDTO peticion)
      Registra una nueva organización en la plataforma GestorRH.

      El flujo de registro incluye la validación de disponibilidad del correo electrónico, el cifrado de la contraseña de acceso y la persistencia de los datos de contacto iniciales.

      Parameters:
      peticion - Objeto PeticionRegistroEmpresaDTO con las credenciales y datos corporativos.
      Returns:
      RespuestaEmpresaDTO con el perfil público de la empresa creada.
      Throws:
      RuntimeException - Si el correo electrónico ya está en uso por otra empresa en el sistema.
    • obtenerMiPerfil

      @Transactional(readOnly=true) public RespuestaEmpresaDTO obtenerMiPerfil()
      Recupera los datos del perfil de la empresa que ha iniciado sesión.
      Returns:
      RespuestaEmpresaDTO con la información detallada del perfil.
    • actualizarMiPerfil

      @Transactional public RespuestaEmpresaDTO actualizarMiPerfil(PeticionActualizarEmpresaDTO peticion)
      Actualiza la información corporativa y la configuración de geovallado de la empresa autenticada. Permite definir la ubicación exacta de la sede y el radio de validez para los fichajes presenciales.
      Parameters:
      peticion - DTO con los nuevos datos de contacto y coordenadas GPS.
      Returns:
      RespuestaEmpresaDTO con el perfil actualizado.
    • cambiarMiContrasena

      @Transactional public void cambiarMiContrasena(PeticionCambiarPasswordEmpresaDTO peticion)
      Permite a la empresa cambiar su contraseña de acceso. Valida que la contraseña actual proporcionada sea correcta antes de aplicar el cambio.
      Parameters:
      peticion - DTO con la contraseña actual y la nueva contraseña.
      Throws:
      RuntimeException - Si la contraseña actual no coincide con la almacenada.
    • eliminarMiEmpresa

      @Transactional public void eliminarMiEmpresa()
      Realiza el borrado definitivo de la cuenta de empresa y todos sus datos relacionados. Esta operación es irreversible.
    • obtenerEmpresaAutenticada

      private Empresa obtenerEmpresaAutenticada()
      Recupera la entidad Empresa completa desde el repositorio basándose en la identidad del usuario autenticado.
      Returns:
      Empresa Entidad persistente de la empresa.
      Throws:
      jakarta.persistence.EntityNotFoundException - Si la empresa no existe en el sistema.
    • mapearARespuesta

      private RespuestaEmpresaDTO mapearARespuesta(Empresa empresa)
      Transforma la entidad Empresa en un objeto de respuesta DTO para su exposición en la API.
      Parameters:
      empresa - Entidad a mapear.
      Returns:
      RespuestaEmpresaDTO con los datos públicos del perfil.