Subversion Repositories Integrator Subversion

Rev

Rev 259 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
259 espaco 1
package br.com.ec.repository.jpa;
2
 
268 espaco 3
import java.util.ArrayList;
4
import java.util.List;
5
 
259 espaco 6
import javax.persistence.NoResultException;
268 espaco 7
import javax.persistence.TypedQuery;
259 espaco 8
 
9
import org.springframework.stereotype.Repository;
10
 
268 espaco 11
import br.com.ec.core.util.VerificadorUtil;
259 espaco 12
import br.com.ec.domain.dto.VendedorDTO;
13
import br.com.ec.domain.model.Vendedor;
14
import br.com.ec.repository.SistemaAbstractRepository;
15
import br.com.ec.repository.VendedorRepository;
16
 
17
@Repository
18
public class VendedorRepositoryJpaImpl extends SistemaAbstractRepository<Vendedor> implements VendedorRepository {
19
 
20
        private static final String VENDEDOR_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Vendedor informado não existe para esta pessoa";
21
 
22
        @Override
23
        protected String getColunaOrdenadora() {
24
                return "nome";
25
        }
26
 
27
        /*
28
        @Override
29
        protected void setarStringParametrosConsultar(StringBuilder sql, Vendedor vendedor) {
30
                if (VerificadorUtil.naoEstaNuloOuVazio(vendedor)) {
31
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getNome())) {
32
                                sql.append("AND ");
33
                                sql.append(sqlConsultarSemAcento("e.nome"));
34
                                sql.append(" like upper(:nomeVendedor) ");
35
                        }
36
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getAtivo())) {
37
                                sql.append("AND e.ativo = :ativo ");
38
                        }
39
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getIndicadorColaborador())) {
40
                                sql.append("AND e.indicadorColaborador = :indicadorColaborador ");
41
                        }
42
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getPessoa())) {
43
                                sql.append("AND e.pessoa = :pessoa ");
44
                        }
45
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getLoja())) {
46
                                sql.append("AND e.loja = :loja ");
47
                        }
48
                }
49
        }
50
 
51
        @Override
52
        protected void setarQueryParametrosConsultar(Query query, Vendedor vendedor) {
53
                if (VerificadorUtil.naoEstaNuloOuVazio(vendedor)) {
54
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getNome())) {
55
                                query.setParameter("nomeVendedor", "%" + removerAcentuacao(vendedor.getNome()) + "%");
56
                        }
57
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getAtivo())) {
58
                                query.setParameter("ativo", vendedor.getAtivo());
59
                        }
60
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getIndicadorColaborador())) {
61
                                query.setParameter("indicadorColaborador", vendedor.getIndicadorColaborador());
62
                        }
63
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getPessoa())) {
64
                                query.setParameter("pessoa", vendedor.getPessoa());
65
                        }
66
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getLoja())) {
67
                                query.setParameter("loja", vendedor.getLoja());
68
                        }
69
                }
70
        }
71
        */
72
        @Override
73
        public VendedorDTO consultarVendedorPorPessoa(Long sequencialPessoa) {
74
                StringBuilder jpql = new StringBuilder();
268 espaco 75
                jpql.append("SELECT new br.com.ec.domain.dto.VendedorDTO(v.sequencial, v.pessoa.sequencial, v.nome, v.loja.sequencial, v.loja.descricao) ");
259 espaco 76
                jpql.append("FROM Vendedor v ");
77
                jpql.append("WHERE v.pessoa.sequencial = :sequencialPessoa");
78
                try {
79
                        return getEntityManager().createQuery(jpql.toString(), VendedorDTO.class)
80
                                        .setParameter("sequencialPessoa", sequencialPessoa)
81
                                        .getSingleResult();
82
                } catch (NoResultException nre) {
83
                        throw new RuntimeException(VENDEDOR_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
84
                }
85
        }
86
 
268 espaco 87
        @Override
88
        public List<VendedorDTO> consultarVendedoresColaboradores() {
89
                return consultarVendedoresColaboradores(null);
90
        }
91
 
92
        private List<VendedorDTO> consultarVendedoresColaboradores(Boolean indicadorAtivo) {
93
                StringBuilder jpql = new StringBuilder();
94
                jpql.append("SELECT new br.com.ec.domain.dto.VendedorDTO(v.sequencial, v.pessoa.sequencial, v.nome, v.loja.sequencial, v.loja.descricao) ");
95
                jpql.append("FROM Vendedor v ");
96
                jpql.append("WHERE v.indicadorColaborador = true ");
97
                if (VerificadorUtil.naoEstaNulo(indicadorAtivo)) {
98
                        jpql.append("AND v.ativo = :indicadorAtivo ");
99
                }
100
                try {
101
                        TypedQuery<VendedorDTO> query = (TypedQuery<VendedorDTO>) getEntityManager().createQuery(jpql.toString(), VendedorDTO.class);
102
                        if (VerificadorUtil.naoEstaNulo(indicadorAtivo)) {
103
                                query.setParameter("indicadorAtivo", indicadorAtivo);
104
                        }
105
                        return query.getResultList();
106
                } catch (NoResultException re) {
107
                        return new ArrayList<VendedorDTO>();
108
                }
109
        }
110
 
259 espaco 111
}