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 temPerfilFinanceiro
(Usuario usuario
) {
return temPerfilAdministrador
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_FINANCEIRO_2);
}
/********************/
@
Override
public Boolean temPerfilGerenteAdministrativo
(Usuario usuario
) {
return temPerfilAdministrador
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_GERENTE_ADMINISTRATIVO_3);
}
@
Override
public Boolean temPerfilComercial
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_COMERCIAL_6);
}
@
Override
public Boolean temPerfilLojistica
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_LOJISTICA_4);
}
@
Override
public Boolean temPerfilVendedor
(Usuario usuario
) {
return temPerfilComercial
(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 temPerfilCompras
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_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 temPerfilOperacoes
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_OPERACOES_12);
}
@
Override
public Boolean temPerfilProducao
(Usuario usuario
) {
return temPerfilGerenteAdministrativo
(usuario
) || verificarPerfil
(usuario, ConstantesSEC.
PERFIL_PRODUCAO_15);
}
@
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;
}
}