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.repository.jpa;
2
 
227 espaco 3
import java.util.List;
4
 
224 espaco 5
import javax.persistence.NoResultException;
218 espaco 6
import javax.persistence.TypedQuery;
7
 
8
import org.springframework.stereotype.Repository;
9
 
224 espaco 10
import br.com.ec.core.exception.NegocioException;
325 espaco 11
import br.com.ec.domain.dto.FuncionarioDTO;
229 espaco 12
import br.com.ec.domain.dto.LojaDTO;
218 espaco 13
import br.com.ec.domain.dto.UsuarioDTO;
227 espaco 14
import br.com.ec.domain.dto.UsuarioPerfilDTO;
259 espaco 15
import br.com.ec.domain.model.Usuario;
218 espaco 16
import br.com.ec.repository.SistemaAbstractRepository;
17
import br.com.ec.repository.UsuarioRepository;
18
 
19
@Repository
20
public class UsuarioRepositoryJpaImpl extends SistemaAbstractRepository<Usuario> implements UsuarioRepository {
21
 
224 espaco 22
        private static final String USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Usuário informado não existe para esta pessoa";
218 espaco 23
 
24
        @Override
25
        public UsuarioDTO consultarPorLogin(String login, String senha) {
26
                StringBuilder jpql = new StringBuilder();
325 espaco 27
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioDTO(");
28
                jpql.append(UsuarioDTO.CONSULTA_DTO_COMPLETA);
29
                jpql.append(") FROM Usuario e ");
30
                jpql.append("WHERE e.login = :login AND e.senha = :senha AND e.ativo is true");
224 espaco 31
                try {
32
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
218 espaco 33
                                        .setParameter("login", login)
34
                                        .setParameter("senha", senha)
35
                                        .getSingleResult();
224 espaco 36
                } catch (NoResultException nre) {
37
                        throw new NegocioException("Usuário não existe");
38
                }
218 espaco 39
        }
40
 
41
        @Override
325 espaco 42
        public UsuarioDTO consultarPorPessoa(Long sequencialPessoa) {
43
                StringBuilder jpql = new StringBuilder();
44
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioDTO(");
45
                jpql.append(UsuarioDTO.CONSULTA_DTO_COMPLETA);
46
                jpql.append(") FROM Usuario e ");
47
                jpql.append("WHERE e.pessoa.sequencial = :sequencialPessoa");
48
                try {
49
                        return getEntityManager().createQuery(jpql.toString(), UsuarioDTO.class)
50
                                        .setParameter("sequencialPessoa", sequencialPessoa)
51
                                        .getSingleResult();
52
                } catch (NoResultException nre) {
53
                        nre.printStackTrace();
54
                }
55
                return null;
56
        }
57
 
58
        @Override
227 espaco 59
        public List<UsuarioPerfilDTO> consultarPerfisDoUsuario(Long sequencialUsuario) {
60
                StringBuilder jpql = new StringBuilder();
325 espaco 61
                jpql.append("SELECT new br.com.ec.domain.dto.UsuarioPerfilDTO(");
62
                jpql.append(UsuarioPerfilDTO.CONSULTA_DTO_COMPLETA);
63
                jpql.append(") FROM UsuarioPerfil e ");
64
                jpql.append("WHERE e.usuario.sequencial = :sequencialUsuario ");
65
                jpql.append("ORDER BY e.perfil.descricao ");
227 espaco 66
                try {
325 espaco 67
                        TypedQuery<UsuarioPerfilDTO> query = getEntityManager().createQuery(jpql.toString(), UsuarioPerfilDTO.class);
68
                        query.setParameter("sequencialUsuario", sequencialUsuario);
69
                        return query.getResultList();
70
                } catch(Exception ex) {
227 espaco 71
                        ex.printStackTrace();
325 espaco 72
                        return null;
227 espaco 73
                }
74
        }
75
 
325 espaco 76
        /*
227 espaco 77
        @Override
229 espaco 78
        public List<LojaDTO> consultarLojasDoUsuario(Long sequencialUsuario) {
227 espaco 79
                StringBuilder jpql = new StringBuilder();
229 espaco 80
                jpql.append("SELECT new br.com.ec.domain.dto.LojaDTO(ul.loja.sequencial, ul.loja.descricao) FROM UsuarioLoja ul ");
228 espaco 81
                jpql.append("WHERE ul.usuario.sequencial = :sequencialUsuario ");
82
                jpql.append("ORDER BY ul.loja.ordenador ");
227 espaco 83
                try {
229 espaco 84
                        return getEntityManager().createQuery(jpql.toString(), LojaDTO.class)
228 espaco 85
                                        .setParameter("sequencialUsuario", sequencialUsuario)
86
                                        .getResultList();
227 espaco 87
                } catch (Exception ex) {
88
                        ex.printStackTrace();
89
                }
90
                return null;
91
        }
325 espaco 92
        */
227 espaco 93
 
94
        @Override
218 espaco 95
        public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada(String login, String senha) {
96
                StringBuilder jpql = new StringBuilder();
97
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
98
                jpql.append("WHERE u.login != :login AND u.senha = :senha");
99
                try {
100
                        TypedQuery<Long> query = getEntityManager()
101
                                        .createQuery(jpql.toString(), Long.class)
102
                                        .setParameter("login", login)
103
                                        .setParameter("senha", senha);
104
                        return query.getSingleResult().intValue();
105
                } catch(Exception ex) {
106
                        ex.printStackTrace();
107
                }
108
                return 0;
109
        }
110
 
111
        @Override
226 espaco 112
        public Integer obterQuantidadeUsuarioComLoginCpfInformados(String login, String cpfCnpj) {
113
                StringBuilder jpql = new StringBuilder();
114
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
115
                jpql.append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
116
                try {
117
                        TypedQuery<Long> query = getEntityManager()
118
                                        .createQuery(jpql.toString(), Long.class)
119
                                        .setParameter("login", login)
120
                                        .setParameter("cpfCnpj", cpfCnpj);
121
                        return query.getSingleResult().intValue();
122
                } catch(Exception ex) {
123
                        ex.printStackTrace();
124
                }
125
                return 0;
126
        }
127
 
128
        @Override
218 espaco 129
        public void alterarSenha(String login, String senha) {
130
                StringBuilder sql = new StringBuilder();
131
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
132
                sql.append("WHERE u.login = :login");
133
                try {
134
                        getEntityManager().createQuery(sql.toString())
135
                                .setParameter("login", login)
136
                                .setParameter("senha", senha)
137
                                .executeUpdate();
138
                        getEntityManager().flush();
139
                } catch(Exception ex) {
140
                        ex.printStackTrace();
141
                }
142
        }
143
 
224 espaco 144
        @Override
145
        public String consultarEmailPorLogin(String login) {
146
                StringBuilder jpql = new StringBuilder();
147
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
148
                jpql.append("WHERE u.login = :login AND u.ativo is true");
149
                try {
150
                        return getEntityManager().createQuery(jpql.toString(), String.class)
151
                                        .setParameter("login", login)
152
                                        .getSingleResult();
153
                } catch(NoResultException nre) {
154
                        nre.printStackTrace();
155
                }
156
                return null;
157
        }
158
 
218 espaco 159
        /*
160
        @Override
242 espaco 161
        public Usuario consultarPorLoginAnterior(Usuario usuario) {
218 espaco 162
                StringBuilder jpql = new StringBuilder();
163
                jpql.append("SELECT u FROM Usuario u ");
164
                jpql.append("LEFT JOIN FETCH u.perfis p ");
242 espaco 165
//              jpql.append("LEFT JOIN FETCH u.lojas l ");
218 espaco 166
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
167
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
168
                                        .setParameter("login", usuario.getLogin())
169
                                        .setParameter("senha", usuario.getSenha())
170
                                        .getSingleResult();
171
        }
242 espaco 172
 
173
        @Override
174
        protected String getColunaOrdenadora() {
175
                return "nome";
176
        }
218 espaco 177
 
242 espaco 178
 
179
 
218 espaco 180
        @Override
181
        public Usuario consultarUsuarioPorSenha(String senha) {
182
                StringBuilder jpql = new StringBuilder();
183
                jpql.append("SELECT u FROM Usuario u ");
184
                jpql.append("LEFT JOIN FETCH u.perfis p ");
185
                jpql.append("LEFT JOIN FETCH u.lojas l ");
186
                jpql.append("WHERE u.senha = :senha");
187
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
188
                                        .setParameter("senha", senha)
189
                                        .getSingleResult();
190
        }
191
 
192
        @Override
193
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
194
                StringBuilder jpql = new StringBuilder();
195
                jpql.append("SELECT u FROM Usuario u ");
196
                jpql.append("LEFT JOIN FETCH u.perfis p ");
197
                jpql.append("LEFT JOIN FETCH u.lojas l ");
198
                jpql.append("WHERE u.pessoa = :pessoa");
199
                try {
200
                        return getEntityManager().createQuery(jpql.toString(), Usuario.class)
201
                                                .setParameter("pessoa", pessoa)
202
                                                .getSingleResult();
203
                } catch (NoResultException nre) {
204
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
205
                }
206
        }
207
 
208
        @Override
209
        public Usuario detalhar(Usuario usuario) {
210
                StringBuilder jpql = new StringBuilder();
211
                jpql.append("SELECT u FROM Usuario u ");
212
                jpql.append("LEFT JOIN FETCH u.perfis p ");
213
                jpql.append("LEFT JOIN FETCH u.lojas l ");
214
                jpql.append("WHERE u.sequencial = :sequencial");
215
                return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
216
        }
217
 
218
 
219
 
220
        @Override
221
        public void atualizarDataUltimoAcesso(Usuario usuario) {
222
                StringBuilder sql = new StringBuilder();
223
                sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
224
                sql.append("WHERE u.sequencial = :sequencial");
225
                try {
226
                        getEntityManager().createQuery(sql.toString())
227
                                .setParameter("sequencial", usuario.getSequencial())
228
                                .executeUpdate();
229
                        getEntityManager().flush();
230
                } catch(Exception ex) {
231
                        ex.printStackTrace();
232
                }
233
        }
234
 
235
 
236
        */
237
}