Subversion Repositories Integrator Subversion

Rev

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