Subversion Repositories Integrator Subversion

Rev

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

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