Subversion Repositories Integrator Subversion

Rev

Rev 240 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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;
        }
       
}