Subversion Repositories Integrator Subversion

Rev

Rev 268 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.repository.jpa;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.FuncionarioDTO;
import br.com.ec.domain.dto.VendedorDTO;
import br.com.ec.domain.model.Vendedor;
import br.com.ec.repository.SistemaAbstractRepository;
import br.com.ec.repository.VendedorRepository;

@Repository
public class VendedorRepositoryJpaImpl extends SistemaAbstractRepository<Vendedor> implements VendedorRepository {

        private static final String VENDEDOR_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA = "Vendedor informado não existe para esta pessoa";
       
        @Override
        protected String getColunaOrdenadora() {
                return "nome";
        }
       
        /*
        @Override
        protected void setarStringParametrosConsultar(StringBuilder sql, Vendedor vendedor) {
                if (VerificadorUtil.naoEstaNuloOuVazio(vendedor)) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getNome())) {
                                sql.append("AND ");
                                sql.append(sqlConsultarSemAcento("e.nome"));
                                sql.append(" like upper(:nomeVendedor) ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getAtivo())) {
                                sql.append("AND e.ativo = :ativo ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getIndicadorColaborador())) {
                                sql.append("AND e.indicadorColaborador = :indicadorColaborador ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getPessoa())) {
                                sql.append("AND e.pessoa = :pessoa ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getLoja())) {
                                sql.append("AND e.loja = :loja ");
                        }
                }
        }
       
        @Override
        protected void setarQueryParametrosConsultar(Query query, Vendedor vendedor) {
                if (VerificadorUtil.naoEstaNuloOuVazio(vendedor)) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getNome())) {
                                query.setParameter("nomeVendedor", "%" + removerAcentuacao(vendedor.getNome()) + "%");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getAtivo())) {
                                query.setParameter("ativo", vendedor.getAtivo());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getIndicadorColaborador())) {
                                query.setParameter("indicadorColaborador", vendedor.getIndicadorColaborador());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getPessoa())) {
                                query.setParameter("pessoa", vendedor.getPessoa());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(vendedor.getLoja())) {
                                query.setParameter("loja", vendedor.getLoja());
                        }
                }
        }
        */

        @Override
        public VendedorDTO consultarVendedorPorPessoa(Long sequencialPessoa) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.VendedorDTO(");
                jpql.append(VendedorDTO.CONSULTA_DTO_COMPLETA);
                jpql.append(") FROM Vendedor e ");
                jpql.append("WHERE e.pessoa.sequencial = :sequencialPessoa");
                try {
                        return getEntityManager().createQuery(jpql.toString(), VendedorDTO.class)
                                        .setParameter("sequencialPessoa", sequencialPessoa)
                                        .getSingleResult();
                } catch (NoResultException nre) {
                        throw new RuntimeException(VENDEDOR_INFORMADO_NAO_EXISTE_PARA_ESTA_PESSOA);
                }
        }
       
        @Override
        public List<VendedorDTO> consultarVendedoresColaboradores() {
                return consultarVendedoresColaboradores(null);
        }
       
        private List<VendedorDTO> consultarVendedoresColaboradores(Boolean indicadorAtivo) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.VendedorDTO(v.sequencial, v.pessoa.sequencial, v.nome, v.loja.sequencial, v.loja.descricao) ");
                jpql.append("FROM Vendedor v ");
                jpql.append("WHERE v.indicadorColaborador = true ");
                if (VerificadorUtil.naoEstaNulo(indicadorAtivo)) {
                        jpql.append("AND v.ativo = :indicadorAtivo ");
                }
                try {
                        TypedQuery<VendedorDTO> query = (TypedQuery<VendedorDTO>) getEntityManager().createQuery(jpql.toString(), VendedorDTO.class);
                        if (VerificadorUtil.naoEstaNulo(indicadorAtivo)) {
                                query.setParameter("indicadorAtivo", indicadorAtivo);
                        }
                        return query.getResultList();
                } catch (NoResultException re) {
                        return new ArrayList<VendedorDTO>();
                }
        }
       
}