Subversion Repositories Integrator Subversion

Rev

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