Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
760 blopes 1
package br.com.sl.domain.service.impl;
2
 
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Service;
5
 
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;
11
import br.com.sl.domain.dto.UsuarioDTO;
12
import br.com.sl.domain.model.Usuario;
13
import br.com.sl.domain.service.UsuarioService;
14
import br.com.sl.repository.UsuarioRepository;
15
import br.com.sl.shared.CriptografiaMD5;
16
import br.com.sl.shared.EmailComponente;
17
import br.com.sl.shared.SharedComponente;
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
 
24
        private UsuarioRepository usuarioRepository;
25
//      private ParametroService parametroService;
26
 
27
        @Autowired
28
        public UsuarioServiceImpl(UsuarioRepository usuarioRepository, Validador validador) {
29
                super(validador);
30
                this.usuarioRepository = usuarioRepository;
31
        }
32
 
33
        @Override
34
        protected GenericRepository<Usuario> getRepository() {
35
                return this.usuarioRepository;
36
        }
37
 
38
        @Override
39
        public UsuarioDTO consultarPorLogin(String login, String senha) {
40
                senha = CriptografiaMD5.criptografaSenha(senha);
41
                UsuarioDTO usuarioDTO = usuarioRepository.consultarPorLogin(login, senha);
42
                return usuarioDTO;
43
        }
44
 
45
        @Override
46
        public UsuarioDTO consultarPorPessoa(Long sequencialPessoa) {
47
                return usuarioRepository.consultarPorPessoa(sequencialPessoa);
48
        }
49
 
50
        @Override
51
        public void alterarSenhaUsuario(String login, String senhaAtual, String novaSenha) {
52
                verificarSenhas(login, senhaAtual, novaSenha);
53
                usuarioRepository.alterarSenha(login, CriptografiaMD5.criptografaSenha(novaSenha));
54
        }
55
 
56
        private void verificarSenhas(String login, String senhaAtual, String novaSenha) {
57
                if (VerificadorUtil.estaNuloOuVazio(novaSenha)) {
58
                        throw new NegocioException("Senha inválida");
59
                }
60
                if (novaSenha.length() < 6) {
61
                        throw new NegocioException("A senha deve ter 6 dígitos, no mínimo");
62
                }
63
 
64
                try {
65
                        consultarPorLogin(login, senhaAtual);
66
                } catch (Exception e) {
67
                        throw new NegocioException("Senha atual incorreta");
68
                }
69
 
70
                verificarSeSenhaJaExisteEmOutroLogin(login, novaSenha);
71
        }
72
 
73
        private void verificarSeSenhaJaExisteEmOutroLogin(String login, String senha) {
74
                if (usuarioRepository.obterQuantidadeUsuarioDiferenteComSenhaInformada(login, CriptografiaMD5.criptografaSenha(senha)) > 0) {
75
                        throw new NegocioException("Senha já existente, tente outra");
76
                }
77
        }
78
 
79
        @Override
80
        public String resetarSenhaUsuarioRetornandoEmail(String login, String cpf) {
81
                String emailUsuario = usuarioRepository.consultarEmailPorLogin(login);
82
                if (VerificadorUtil.estaNuloOuVazio(emailUsuario)) {
83
                        throw new NegocioException("Usuário não possui email, favor entrar em contato com a administração");
84
                }
85
                if (usuarioRepository.obterQuantidadeUsuarioComLoginCpfInformados(login, cpf) < 1) {
86
                        throw new NegocioException("Dados não conferem, favor entrar em contato com a administração");
87
                }
88
                String senhaProvisoria = new SharedComponente().gerarSenha(8);
89
                usuarioRepository.alterarSenha(login, CriptografiaMD5.criptografaSenha(senhaProvisoria));
90
                new EmailComponente()
91
                        .comEmailDestino(emailUsuario)
92
                        .comAssunto("ESPAÇO CASE - REDEFINIÇÃO DE SENHA")
93
                        .comConteudoHtml("Sua nova senha: " + senhaProvisoria)
94
                        .enviar();
95
                return emailUsuario;
96
        }
97
 
98
        @Override
99
        public UsuarioDTO efetuarLogin(Usuario usuario) {
100
                if (VerificadorUtil.naoEstaNuloOuVazio(usuario.getSenha())) {
101
                        if (usuario.getSenha().length() < 6) {
102
                                throw new RuntimeException("Senha inválida");
103
                        }
104
                } else {
105
                        throw new RuntimeException("Senha inválida");
106
                }
107
                try {
108
                        criptografarSenhaUsuarioEmMD5(usuario);
109
                        UsuarioDTO usuarioConsultado = usuarioRepository.consultarPorLogin(usuario.getLogin(), usuario.getSenha());
110
                        if (VerificadorUtil.naoEstaNulo(usuarioConsultado)) {
111
//                              usuarioRepository.atualizarDataUltimoAcesso(usuarioConsultado);
112
                        }
113
//                      usuarioConsultado.setParametros(parametroService.listarParametrosAtivos());
114
                        return usuarioConsultado;
115
                } catch (Exception e) {
116
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
117
                }
118
        }
119
 
120
        private void criptografarSenhaUsuarioEmMD5(Usuario usuario) {
121
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
122
        }
123
 
124
        @Override
125
        public void alterar(UsuarioDTO usuarioDTO) {
126
                Usuario usuario = consultarPorId(new Usuario(usuarioDTO.getSequencial()));
127
                usuario.atualizarDados(usuarioDTO);
128
                alterar(usuario);
129
        }
130
 
131
        /*
132
        @Override
133
        protected void regrasNegocioCadastrar(Usuario usuario) {
134
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
135
                usuario.setAtivo(true);
136
        }
137
 
138
        @Override
139
        public Usuario consultarUsuarioPorSenha(String senha) {
140
                try {
141
                        senha = CriptografiaMD5.criptografaSenha(senha);
142
                        return usuarioRepository.consultarUsuarioPorSenha(senha);
143
                } catch (Exception e) {
144
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
145
                }
146
        }
147
 
148
        @Override
149
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
150
                return usuarioRepository.consultarUsuarioPorPessoa(pessoa);
151
        }
152
 
153
        @Override
154
        public Usuario detalhar(Usuario usuario) {
155
                return usuarioRepository.detalhar(usuario);
156
        }
157
        */
158
 
159
}