Subversion Repositories Integrator Subversion

Rev

Rev 226 | Rev 228 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
218 espaco 1
package br.com.ec.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.ec.domain.dto.UsuarioDTO;
12
import br.com.ec.domain.modal.Usuario;
13
import br.com.ec.domain.service.UsuarioService;
14
import br.com.ec.repository.UsuarioRepository;
15
import br.com.ec.shared.CriptografiaMD5;
224 espaco 16
import br.com.ec.shared.EmailComponente;
17
import br.com.ec.shared.SharedComponente;
218 espaco 18
 
19
@Service
20
public class UsuarioServiceImpl extends AbstractService<Usuario> implements UsuarioService {
21
 
224 espaco 22
        private static final String USUARIO_INFORMADO_NAO_EXISTE = "Usuário informado não existe";
218 espaco 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
        public UsuarioDTO consultarPorLogin(String login, String senha) {
40
                senha = CriptografiaMD5.criptografaSenha(senha);
227 espaco 41
                UsuarioDTO usuarioDTO = usuarioRepository.consultarPorLogin(login, senha);
42
                usuarioDTO.setPerfis(usuarioRepository.consultarPerfisDoUsuario(usuarioDTO.getSequencial()));
43
                usuarioDTO.setLojas(usuarioRepository.consultarLojasDoUsuario(usuarioDTO.getSequencial()));
44
                return usuarioDTO;
218 espaco 45
        }
46
 
47
        @Override
48
        public void alterarSenhaUsuario(String login, String senhaAtual, String novaSenha) {
49
                verificarSenhas(login, senhaAtual, novaSenha);
224 espaco 50
                usuarioRepository.alterarSenha(login, CriptografiaMD5.criptografaSenha(novaSenha));
218 espaco 51
        }
52
 
53
        private void verificarSenhas(String login, String senhaAtual, String novaSenha) {
54
                if (VerificadorUtil.estaNuloOuVazio(novaSenha)) {
224 espaco 55
                        throw new NegocioException("Senha inválida");
218 espaco 56
                }
57
                if (novaSenha.length() < 6) {
224 espaco 58
                        throw new NegocioException("A senha deve ter 6 dígitos, no mínimo");
218 espaco 59
                }
60
 
61
                try {
62
                        consultarPorLogin(login, senhaAtual);
63
                } catch (Exception e) {
64
                        throw new NegocioException("Senha atual incorreta");
65
                }
66
 
224 espaco 67
                verificarSeSenhaJaExisteEmOutroLogin(login, novaSenha);
68
        }
69
 
70
        private void verificarSeSenhaJaExisteEmOutroLogin(String login, String senha) {
71
                if (usuarioRepository.obterQuantidadeUsuarioDiferenteComSenhaInformada(login, CriptografiaMD5.criptografaSenha(senha)) > 0) {
72
                        throw new NegocioException("Senha já existente, tente outra");
218 espaco 73
                }
74
        }
75
 
224 espaco 76
        @Override
226 espaco 77
        public String resetarSenhaUsuarioRetornandoEmail(String login, String cpf) {
224 espaco 78
                String emailUsuario = usuarioRepository.consultarEmailPorLogin(login);
79
                if (VerificadorUtil.estaNuloOuVazio(emailUsuario)) {
80
                        throw new NegocioException("Usuário não possui email, favor entrar em contato com a administração");
81
                }
226 espaco 82
                if (usuarioRepository.obterQuantidadeUsuarioComLoginCpfInformados(login, cpf) < 1) {
83
                        throw new NegocioException("Dados não conferem, favor entrar em contato com a administração");
84
                }
224 espaco 85
                String senhaProvisoria = new SharedComponente().gerarSenha(8);
86
                usuarioRepository.alterarSenha(login, CriptografiaMD5.criptografaSenha(senhaProvisoria));
87
                new EmailComponente()
88
                        .comEmailDestino(emailUsuario)
89
                        .comAssunto("ESPAÇO CASE - REDEFINIÇÃO DE SENHA")
90
                        .comConteudoHtml("Sua nova senha: " + senhaProvisoria)
91
                        .enviar();
226 espaco 92
                return emailUsuario;
218 espaco 93
        }
94
 
95
        /*
96
        @Override
97
        protected void regrasNegocioCadastrar(Usuario usuario) {
98
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
99
                usuario.setAtivo(true);
100
        }
101
 
102
        @Override
103
        public Usuario efetuarLogin(Usuario usuario) {
104
                if (VerificadorUtil.naoEstaNuloOuVazio(usuario.getSenha())) {
105
                        if (usuario.getSenha().length() < 6) {
224 espaco 106
                                throw new RuntimeException("Senha inv�lida");
218 espaco 107
                        }
108
                } else {
224 espaco 109
                        throw new RuntimeException("Senha inv�lida");
218 espaco 110
                }
111
                try {
112
                        criptografarSenhaUsuarioEmMD5(usuario);
113
                        Usuario usuarioConsultado = usuarioRepository.consultarPorLogin(usuario);
114
                        if (VerificadorUtil.naoEstaNulo(usuarioConsultado)) {
115
                                usuarioRepository.atualizarDataUltimoAcesso(usuarioConsultado);
116
                        }
117
                        usuarioConsultado.setParametros(parametroService.listarParametrosAtivos());
118
                        return usuarioConsultado;
119
                } catch (Exception e) {
120
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
121
                }
122
        }
123
 
124
        private void criptografarSenhaUsuarioEmMD5(Usuario usuario) {
125
                usuario.setSenha(CriptografiaMD5.criptografaSenha(usuario.getSenha()));
126
        }
127
 
128
        @Override
129
        public Usuario consultarUsuarioPorSenha(String senha) {
130
                try {
131
                        senha = CriptografiaMD5.criptografaSenha(senha);
132
                        return usuarioRepository.consultarUsuarioPorSenha(senha);
133
                } catch (Exception e) {
134
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE);
135
                }
136
        }
137
 
138
        @Override
139
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
140
                return usuarioRepository.consultarUsuarioPorPessoa(pessoa);
141
        }
142
 
143
        @Override
144
        public Usuario detalhar(Usuario usuario) {
145
                return usuarioRepository.detalhar(usuario);
146
        }
147
        */
148
 
149
}