package br.com.ec.domain.service.perfil.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.model.Perfil;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.UsuarioPerfil;
import br.com.ec.domain.service.perfil.PerfilService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.infrastructure.repository.PerfilRepository;
@Service
public class PerfilServiceImpl
extends AbstractService
<Perfil
> implements PerfilService
{
private final PerfilRepository perfilRepository
;
@Autowired
public PerfilServiceImpl
(PerfilRepository perfilRepository, Validador validador
) {
super(validador
);
this.
perfilRepository = perfilRepository
;
}
@
Override
protected GenericRepository
<Perfil
> getRepository
() {
return this.
perfilRepository;
}
/***************************************************************/
@
Override
public List<Perfil
> consultarPerfisComSetoresAtivos
() {
return perfilRepository.
consultarPerfisComSetoresAtivos();
}
@
Override
public Boolean temPerfilAdministrador
(Usuario usuario
) {
return verificarPerfil
(usuario, ConstantesSEC.
PERFIL_ADMINISTRADOR_1);
}
@
Override
public Boolean temPerfilGerenteFinanceiro
(Usuario usuario
) {
return temPerfilAdministrador
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_FINANCEIRO_2);
}
/********************/
@
Override
public Boolean temPerfilGerenteAdministrativo
(Usuario usuario
) {
return temPerfilAdministrador
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_ADMINISTRATIVO_3);
}
@
Override
public Boolean temPerfilGerenteComercial
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_COMERCIAL_6);
}
@
Override
public Boolean temPerfilGerenteDeLojistica
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_LOJISTICA_4);
}
@
Override
public Boolean temPerfilVendedor
(Usuario usuario
) {
return temPerfilGerenteComercial
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_VENDEDOR_5);
}
@
Override
public Boolean temPerfilLoja
(Usuario usuario
) {
return temPerfilVendedor
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_LOJA_9);
}
@
Override
public Boolean temPerfilGerenteDeCompras
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_COMPRAS_7);
}
@
Override
public Boolean temPerfilGerenteVivo
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_VIVO_8);
}
@
Override
public Boolean temPerfilTecnico
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_TECNICO_10);
}
@
Override
public Boolean temPerfilRecursosHumanos
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_RECURSOS_HUMANOS_11);
}
@
Override
public Boolean temPerfilGerenteDeOperacoes
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_OPERACOES_12);
}
@
Override
public Boolean temPerfilSupervisor
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_SUPERVISOR_13);
}
@
Override
public Boolean temPerfilTreinamento
(Usuario usuario
) {
return verificarPerfil
(usuario, ConstantesSEC.
PERFIL_TREINAMENTO_14);
}
private Boolean verificarPerfil
(Usuario usuario,
Long sequencialPerfil
) {
for (UsuarioPerfil usuarioPerfil : usuario.
getPerfis()) {
if (usuarioPerfil.
getPerfil().
getCodigo().
equals(sequencialPerfil
)) {
return true;
}
}
return false;
}
}