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