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;
}
}
*/
}