Subversion Repositories Integrator Subversion

Rev

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