Subversion Repositories Integrator Subversion

Rev

Rev 226 | Rev 228 | 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 ");
57
                jpql.append("WHERE ul.usuario.sequencial = :sequencialUsuario");
58
                try {
59
                        return getEntityManager().createQuery(jpql.toString(), UsuarioLojaDTO.class)
60
                                                .setParameter("sequencialUsuario", sequencialUsuario)
61
                                                .getResultList();
62
                } catch (Exception ex) {
63
                        ex.printStackTrace();
64
                }
65
                return null;
66
        }
67
 
68
        @Override
218 espaco 69
        public Integer obterQuantidadeUsuarioDiferenteComSenhaInformada(String login, String senha) {
70
                StringBuilder jpql = new StringBuilder();
71
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
72
                jpql.append("WHERE u.login != :login AND u.senha = :senha");
73
                try {
74
                        TypedQuery<Long> query = getEntityManager()
75
                                        .createQuery(jpql.toString(), Long.class)
76
                                        .setParameter("login", login)
77
                                        .setParameter("senha", senha);
78
                        return query.getSingleResult().intValue();
79
                } catch(Exception ex) {
80
                        ex.printStackTrace();
81
                }
82
                return 0;
83
        }
84
 
85
        @Override
226 espaco 86
        public Integer obterQuantidadeUsuarioComLoginCpfInformados(String login, String cpfCnpj) {
87
                StringBuilder jpql = new StringBuilder();
88
                jpql.append("SELECT COUNT(u) FROM Usuario u ");
89
                jpql.append("WHERE u.login = :login AND u.pessoa.cpfCnpj like :cpfCnpj");
90
                try {
91
                        TypedQuery<Long> query = getEntityManager()
92
                                        .createQuery(jpql.toString(), Long.class)
93
                                        .setParameter("login", login)
94
                                        .setParameter("cpfCnpj", cpfCnpj);
95
                        return query.getSingleResult().intValue();
96
                } catch(Exception ex) {
97
                        ex.printStackTrace();
98
                }
99
                return 0;
100
        }
101
 
102
        @Override
218 espaco 103
        public void alterarSenha(String login, String senha) {
104
                StringBuilder sql = new StringBuilder();
105
                sql.append("UPDATE Usuario u SET u.senha = :senha ");
106
                sql.append("WHERE u.login = :login");
107
                try {
108
                        getEntityManager().createQuery(sql.toString())
109
                                .setParameter("login", login)
110
                                .setParameter("senha", senha)
111
                                .executeUpdate();
112
                        getEntityManager().flush();
113
                } catch(Exception ex) {
114
                        ex.printStackTrace();
115
                }
116
        }
117
 
224 espaco 118
        @Override
119
        public String consultarEmailPorLogin(String login) {
120
                StringBuilder jpql = new StringBuilder();
121
                jpql.append("SELECT u.pessoa.email FROM Usuario u ");
122
                jpql.append("WHERE u.login = :login AND u.ativo is true");
123
                try {
124
                        return getEntityManager().createQuery(jpql.toString(), String.class)
125
                                        .setParameter("login", login)
126
                                        .getSingleResult();
127
                } catch(NoResultException nre) {
128
                        nre.printStackTrace();
129
                }
130
                return null;
131
        }
132
 
218 espaco 133
        /*
134
        @Override
135
        protected String getColunaOrdenadora() {
136
                return "nome";
137
        }
138
 
139
        @Override
140
        public Usuario consultarPorLogin(Usuario usuario) {
141
                StringBuilder jpql = new StringBuilder();
142
                jpql.append("SELECT u FROM Usuario u ");
143
                jpql.append("LEFT JOIN FETCH u.perfis p ");
144
                jpql.append("LEFT JOIN FETCH u.lojas l ");
145
                jpql.append("WHERE u.login = :login AND u.senha = :senha AND u.ativo is true");
146
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
147
                                        .setParameter("login", usuario.getLogin())
148
                                        .setParameter("senha", usuario.getSenha())
149
                                        .getSingleResult();
150
        }
151
 
152
        @Override
153
        public Usuario consultarUsuarioPorSenha(String senha) {
154
                StringBuilder jpql = new StringBuilder();
155
                jpql.append("SELECT u FROM Usuario u ");
156
                jpql.append("LEFT JOIN FETCH u.perfis p ");
157
                jpql.append("LEFT JOIN FETCH u.lojas l ");
158
                jpql.append("WHERE u.senha = :senha");
159
                return getEntityManager().createQuery(jpql.toString(), Usuario.class)
160
                                        .setParameter("senha", senha)
161
                                        .getSingleResult();
162
        }
163
 
164
        @Override
165
        public Usuario consultarUsuarioPorPessoa(Pessoa pessoa) {
166
                StringBuilder jpql = new StringBuilder();
167
                jpql.append("SELECT u FROM Usuario u ");
168
                jpql.append("LEFT JOIN FETCH u.perfis p ");
169
                jpql.append("LEFT JOIN FETCH u.lojas l ");
170
                jpql.append("WHERE u.pessoa = :pessoa");
171
                try {
172
                        return getEntityManager().createQuery(jpql.toString(), Usuario.class)
173
                                                .setParameter("pessoa", pessoa)
174
                                                .getSingleResult();
175
                } catch (NoResultException nre) {
176
                        throw new RuntimeException(USUARIO_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
177
                }
178
        }
179
 
180
        @Override
181
        public Usuario detalhar(Usuario usuario) {
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.sequencial = :sequencial");
187
                return getEntityManager().createQuery(jpql.toString(), Usuario.class).setParameter("sequencial", usuario.getSequencial()).getSingleResult();
188
        }
189
 
190
 
191
 
192
        @Override
193
        public void atualizarDataUltimoAcesso(Usuario usuario) {
194
                StringBuilder sql = new StringBuilder();
195
                sql.append("UPDATE Usuario u SET u.ultimoAcesso = now() ");
196
                sql.append("WHERE u.sequencial = :sequencial");
197
                try {
198
                        getEntityManager().createQuery(sql.toString())
199
                                .setParameter("sequencial", usuario.getSequencial())
200
                                .executeUpdate();
201
                        getEntityManager().flush();
202
                } catch(Exception ex) {
203
                        ex.printStackTrace();
204
                }
205
        }
206
 
207
 
208
        */
209
}