Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.repository.jpa;

import java.util.List;

import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.PessoaDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaPessoasDTO;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.repository.PessoaRepository;
import br.com.ec.repository.SistemaAbstractRepository;

@Repository
public class PessoaRepositoryJpaImpl extends SistemaAbstractRepository<Pessoa> implements PessoaRepository {

        @Override
        protected String getColunaOrdenadora() {
                return "nome";
        }
       
        @Override
        protected void setarStringParametrosConsulta(StringBuilder sql, ParametrosConsulta<Pessoa> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaPessoasDTO)parametros).getEntidade())) {
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaPessoasDTO)parametros).getEntidade().getNome())) {
                                sql.append("AND ");
                                sql.append(sqlConsultarSemAcento("e.nome"));
                                sql.append(" like upper(:nomePessoa) ");
                        }
                }
                /*
                if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaPessoasDTO)parametros).getConsultarColaboradores())) {
                        if (((ParametrosConsultaPessoasDTO)parametros).getConsultarColaboradores().equals(ConstantesSEC.Pessoa.CONSULTAR_COLABORADORES_C)) {
                                sql.append("AND EXISTS (SELECT f FROM Funcionario f WHERE f.pessoa.sequencial = e.sequencial AND (f.admissao != null OR f.demissao != null)) ");
                        } else if (((ParametrosConsultaPessoaDTO)parametros).getConsultarColaboradores().equals(ConstantesSEC.Pessoa.CONSULTAR_COLABORADORES_ADMITIDOS_A)) {
                                sql.append("AND EXISTS (SELECT f FROM Funcionario f WHERE f.pessoa.sequencial = e.sequencial AND f.admissao != null AND f.demissao is null) ");
                        } else if (((ParametrosConsultaPessoaDTO)parametros).getConsultarColaboradores().equals(ConstantesSEC.Pessoa.CONSULTAR_COLABORADORES_DEMITIDOS_D)) {
                                sql.append("AND EXISTS (SELECT f FROM Funcionario f WHERE f.pessoa.sequencial = e.sequencial AND f.admissao != null AND f.demissao != null) ");
                        }
                }
                */

        }

        @Override
        protected void setarQueryParametrosConsulta(Query query, ParametrosConsulta<Pessoa> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(((ParametrosConsultaPessoasDTO)parametros).getEntidade())) {
                        if (VerificadorUtil.naoEstaNulo(((ParametrosConsultaPessoasDTO)parametros).getEntidade().getNome())) {
                                query.setParameter("nomePessoa", "%" + removerAcentuacao(((ParametrosConsultaPessoasDTO)parametros).getEntidade().getNome()) + "%");
                        }
                }
        }
       
        /************************************************************************************/
       
        @Override
        public List<PessoaDTO> consultarPessoasJuridicas(String cnpj) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.PessoaDTO(");
                jpql.append(PessoaDTO.CONSULTA_DTO);
                jpql.append(") FROM Pessoa e ");
                jpql.append("WHERE e.cpfCnpj LIKE :cnpj ");
                jpql.append("ORDER BY e.cpfCnpj ");
                try {
                        return getEntityManager().createQuery(jpql.toString(), PessoaDTO.class).setParameter("cnpj", cnpj).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public Pessoa consultarPessoaPorCpfOuCpnj(String cpfCnpj) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT e FROM Pessoa e ");
                jpql.append("LEFT JOIN FETCH e.enderecos en ");
                jpql.append("WHERE e.cpfCnpj LIKE :cpfCnpj ");
                try {
                        return getEntityManager().createQuery(jpql.toString(), Pessoa.class).setParameter("cpfCnpj", cpfCnpj).getSingleResult();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public Pessoa detalharPessoa(Long sequencialPessoa) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT DISTINCT e FROM Pessoa e ");
                jpql.append("LEFT JOIN FETCH e.enderecos en ");
//              jpql.append("LEFT JOIN FETCH e.papeis pp ");
//              jpql.append("LEFT JOIN FETCH e.dadosBancarios b ");
                jpql.append("WHERE e.sequencial = :sequencialPessoa");
                return getEntityManager().createQuery(jpql.toString(), Pessoa.class).setParameter("sequencialPessoa", sequencialPessoa).getSingleResult();
        }
       
        /************************************************************************************/
       
        /*
        /*
        @Override
        public PessoaDTO consultarPessoaDTOPorCpfOuCpnj(String cpfCnpj) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.PessoaDTO(");
                jpql.append(PessoaDTO.CONSULTA_DTO_COMPLETA);
                jpql.append(") FROM Pessoa e ");
                jpql.append("WHERE e.cpfCnpj LIKE :cpfCnpj ");
                try {
                        return getEntityManager().createQuery(jpql.toString(), PessoaDTO.class).setParameter("cpfCnpj", cpfCnpj).getSingleResult();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public List<Pessoa> consultarPessoasJuridicas() {
                try {
                        StringBuilder jpql = new StringBuilder();
                        jpql.append("SELECT p FROM Pessoa p ");
                        jpql.append("WHERE p.cpfCnpj != '' AND (p.nomeFantasia != '' OR p.razaoSocial != '' OR p.tipoRegimeTributario != '' OR p.inscricaoEstadual != '' OR p.inscricaoMunicipal != '') ");
                        return getEntityManager().createQuery(jpql.toString(), Pessoa.class).getResultList();
                } catch (NoResultException e) {
                        return null;
                }
        }
         */

}