Subversion Repositories Integrator Subversion

Rev

Rev 195 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.service.usuario.impl;
2
 
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Service;
5
 
195 espaco 6
import br.com.ec.core.exception.NegocioException;
7
import br.com.ec.core.generic.AbstractService;
8
import br.com.ec.core.generic.GenericRepository;
9
import br.com.ec.core.util.VerificadorUtil;
10
import br.com.ec.core.validador.Validador;
106 espaco 11
import br.com.ec.domain.model.Pessoa;
12
import br.com.ec.domain.model.Usuario;
448 blopes 13
import br.com.ec.domain.model.UsuarioPerfil;
106 espaco 14
import br.com.ec.domain.service.parametro.ParametroService;
15
import br.com.ec.domain.service.usuario.UsuarioService;
448 blopes 16
import br.com.ec.domain.shared.ConstantesSEC;
106 espaco 17
import br.com.ec.domain.shared.CriptografiaMD5;
18
import br.com.ec.infrastructure.repository.UsuarioRepository;
19
 
20
@Service
21
public class UsuarioServiceImpl extends AbstractService<Usuario> implements UsuarioService {
22
 
23
        private static final String USUARIO_INFORMADO_NAO_EXISTE = "Usuário informado não existe";
24
        private final UsuarioRepository usuarioRepository;
25
        private ParametroService parametroService;
26
 
27
        @Autowired
28
        public UsuarioServiceImpl(ParametroService parametroService, UsuarioRepository usuarioRepository, Validador validador) {
29
                super(validador);
30
                this.parametroService = parametroService;
31
                this.usuarioRepository = usuarioRepository;
32
        }
33
 
34
        @Override
35
        protected GenericRepository<Usuario> getRepository() {
36
                return this.usuarioRepository;
37
        }
38
 
39
        @Override
40
        protected void regrasNegocioCadastrar(Usuario usuario) {
41
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
42
                usuario.setAtivo(true);
43
        }
44
 
45
        @Override
46
        public Usuario efetuarLogin(Usuario usuario) {
47
                if (VerificadorUtil.naoEstaNuloOuVazio(usuario.getSenha())) {
48
                        if (usuario.getSenha().length() < 6) {
49
                                throw new RuntimeException("Senha inválida");
50
                        }
51
                } else {
52
                        throw new RuntimeException("Senha inválida");
53
                }
54
                try {
55
                        criptografarSenhaUsuarioEmMD5(usuario);
56
                        Usuario usuarioConsultado = usuarioRepository.consultarPorLogin(usuario);
57
                        if (VerificadorUtil.naoEstaNulo(usuarioConsultado)) {
58
                                usuarioRepository.atualizarDataUltimoAcesso(usuarioConsultado);
59
                        }
60
                        usuarioConsultado.setParametros(parametroService.listarParametrosAtivos());
61
                        return usuarioConsultado;
62
                } catch (Exception e) {
63
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
64
                }
65
        }
66
 
67
        private void criptografarSenhaUsuarioEmMD5(Usuario usuario) {
68
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
69
        }
70
 
71
        @Override
72
        public Usuario consultarUsuarioPorSenha(String senha) {
73
                try {
74
                        senha = CriptografiaMD5.criptografaSenha(senha);
75
                        return usuarioRepository.consultarUsuarioPorSenha(senha);
76
                } catch (Exception e) {
77
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
78
                }
79
        }
80
 
81
        @Override
82
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
83
                return usuarioRepository.consultarUsuarioPorPessoa(pessoa);
84
        }
85
 
86
        @Override
87
        public Usuario detalhar(Usuario usuario) {
88
                return usuarioRepository.detalhar(usuario);
89
        }
90
 
91
        @Override
92
        public void alterarSenhaUsuario(Usuario usuario) {
93
                if (VerificadorUtil.estaNuloOuVazio(usuario.getSenha())) {
94
                        throw new NegocioException("Senha inválida");
95
                }
96
                if (usuario.getSenha().length() < 6) {
97
                        throw new NegocioException("A senha deve ter 6 dígitos, no mínimo");
98
                }
99
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
100
                if (senhaJaExiste(usuario.getSenha())) {
101
                        throw new NegocioException("Senha inválida, tente outra");
102
                }
103
                usuarioRepository.alterarSenha(usuario);
104
        }
105
 
106
        @Override
107
        public Boolean senhaJaExiste(String senha) {
108
                return usuarioRepository.obterQuantidadeUsuarioComSenha(senha) > 0 ? true : false;
109
        }
110
 
448 blopes 111
        @Override
112
        public void naoPermitirPerfilLoja(Usuario usuario) {
113
                for (UsuarioPerfil usuarioPerfil : usuario.getPerfis()) {
114
                        if (usuarioPerfil.getPerfil().getCodigo().equals(ConstantesSEC.PERFIL_LOJA_9)) {
115
                                throw new NegocioException("Perfil inválido para a operação! Favor informar outro usuário com permissão");
116
                        }
117
                }
118
        }
119
 
106 espaco 120
}