PessoaFisicaUtil.java 4.45 KB
package br.gov.mc.arquitetura.util;

import java.util.ArrayList;
import java.util.Collection;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import br.gov.mc.arquitetura.persistencia.impl.UniversalDaoImpl;
import br.gov.mc.corporativo.entidade.CrpDocumentoPessoaFisica;
import br.gov.mc.corporativo.entidade.CrpPessoaFisica;

@Repository("pessoaFisicaUtil")
public class PessoaFisicaUtil extends UniversalDaoImpl {

	@SuppressWarnings("unchecked")
	public Collection<CrpDocumentoPessoaFisica> pesquisar(Integer idPessoa, Integer idTipDocumento) {
		Criteria c = getCurrentSession().createCriteria(CrpDocumentoPessoaFisica.class);
		c.createCriteria("tipoDocumento").add(Restrictions.idEq(idTipDocumento));
		c.createCriteria("pessoaFisica").add(Restrictions.idEq(idPessoa));
		return listByExample(c);
	}
	
	public Collection<CrpPessoaFisica> pesquisar(CrpPessoaFisica pf) {
		if (pf != null) {
			Criteria c = getCurrentSession().createCriteria(pf.getClass());

			if (pf.getDataAlteracao() != null) {
				c.add(Restrictions.eq("dataAlteracao", pf.getDataAlteracao()));
			}
			if (pf.getId() != null) {
				c.add(Restrictions.idEq(pf.getId()));
			}
			if (pf.getTipoPessoa() != null && pf.getTipoPessoa().getId() != null) {
				c.createCriteria("tipoPessoa").add(Restrictions.idEq(pf.getTipoPessoa().getId()));
			}
			if (pf.getTipoOperacao() != null && !"".equals(pf.getTipoOperacao())) {
				c.add(Restrictions.ilike("tipoOperacao", "%" + pf.getTipoOperacao() + "%"));
			}
			if (pf.getSituacaoPessoaOrgao() != null && pf.getSituacaoPessoaOrgao().getId() != null) {
				c.createCriteria("situacaoPessoaOrgao").add(Restrictions.idEq(pf.getSituacaoPessoaOrgao().getId()));
			}
			if (pf.getSituacaoPessoaReceitaFederal() != null && pf.getSituacaoPessoaOrgao() != null) {
				c.createCriteria("situacaoPessoaReceitaFederal").add(
								Restrictions.idEq(pf.getSituacaoPessoaReceitaFederal().getId()));
			}
			if (pf.getDataEmissao() != null) {
				c.add(Restrictions.eq("dataEmissao", pf.getDataEmissao()));
			}
			if (pf.getDataNascimento() != null) {
				c.add(Restrictions.eq("dataNascimento", pf.getDataNascimento()));
			}
			if (pf.getDataSituacaoCadastral() != null) {
				c.add(Restrictions.eq("dataSituacaoCadastral", pf.getDataSituacaoCadastral()));
			}
			if (pf.getMunicipio() != null && !"".equals(pf.getMunicipio().getId())) {
				c.createCriteria("municipio").add(Restrictions.idEq(pf.getMunicipio().getId()));
			}
			if (pf.getNome() != null && !"".equals(pf.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + pf.getNome().trim() + "%"));
			}
			if (pf.getNomeMae() != null && !"".equals(pf.getNomeMae())) {
				c.add(Restrictions.ilike("nomeMae", "%" + pf.getNomeMae() + "%"));
			}
			if (pf.getNomePai() != null && !"".equals(pf.getNomePai())) {
				c.add(Restrictions.ilike("nomePai", "%" + pf.getNomePai() + "%"));
			}
			if (pf.getPais() != null && pf.getPais().getId() != null) {
				c.createCriteria("pais").add(Restrictions.idEq(pf.getPais().getId()));
			}
			if (pf.getSexo() != null && !"".equals(pf.getSexo())) {
				c.add(Restrictions.eq("sexo", pf.getSexo()));
			}
			if (pf.getCorRaca() != null && pf.getCorRaca().getId() != null){
				c.createCriteria("corRaca").add(Restrictions.idEq(pf.getCorRaca().getId()));
			}

			if (pf.getDocumentos() != null && pf.getDocumentos().size() > 0) {
				Collection<Integer> ids = new ArrayList<Integer>();
				for (CrpDocumentoPessoaFisica d : pf.getDocumentos()) {
					Criteria documento = getCurrentSession().createCriteria(CrpDocumentoPessoaFisica.class);
					if (d.getId() != null)
						documento.add(Restrictions.idEq(d.getId()));
					if (d.getDataEmissao() != null)
						documento.add(Restrictions.eq("dataEmissao", d.getDataEmissao()));
					if (d.getNumero() != null && !"".equals(d.getNumero()))
						documento.add(Restrictions.eq("numero", d.getNumero()));
					if (d.getOrgaoEmissor() != null && !"".equals(d.getOrgaoEmissor()))
						documento.add(Restrictions.eq("orgaoEmissor", d.getOrgaoEmissor()));

					Collection<CrpDocumentoPessoaFisica> documentos = listByExample(documento);

					if (documentos != null && documentos.size() > 0) {
						for (CrpDocumentoPessoaFisica doc : documentos) {
							ids.add(doc.getPessoaFisica().getId());
						}
					}
				}

				if (ids != null && ids.size() > 0) {
					c.add(Restrictions.in("id", ids));
				} else {
					return null;
				}
			}

			return listByExample(c);
		}

		return getAll(pf.getClass());
	}

}