Subversion Repositories Integrator Subversion

Rev

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