Subversion Repositories Integrator Subversion

Rev

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