package gcom.gui.cadastro.cliente;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
/**
* [UC0000] Pesquisar Cliente
* Realiza a pesquisa de cliente de acordo com os par�metros informados
*
* @author S�vio Luiz, Roberta Costa
* @created 21/07/2005, 11/07/2006
*/
public class PesquisarClienteAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("listaCliente");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm;
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
// Recupera os par�metros do form
Integer idTipoCliente = (Integer) pesquisarActionForm
.get("idTipoCliente");
String nomeCliente = (String) pesquisarActionForm.get("nomeCliente");
String cpf = (String) pesquisarActionForm.get("cpf");
String rg = (String) pesquisarActionForm.get("rg");
String cnpj = (String) pesquisarActionForm.get("cnpj");
String cep = (String) pesquisarActionForm.get("cepClienteEndereco");
String idMunicipio = (String) pesquisarActionForm.get("idMunicipioCliente");
String codigoBairro = (String) pesquisarActionForm.get("codigoBairroCliente");
String idLogradouro = (String) pesquisarActionForm.get("idLogradouroCliente");
String idEsferaPoder = (String) pesquisarActionForm.get("idEsferaPoder");
String tipoPesquisa = (String) pesquisarActionForm.get("tipoPesquisa");
// filtro para a pesquisa de endereco do cliente
/*FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.setCampoOrderBy(FiltroCliente.NOME);
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade(FiltroCliente.ORGAO_EXPEDIDOR_RG);
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade(FiltroCliente.UNIDADE_FEDERACAO);
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade("cliente.clienteTipo");
filtroCliente
.adicionarCaminhoParaCarregamentoEntidade("clienteTipo.indicadorPessoaFisicaJuridica");
*/
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
if (idTipoCliente != null
&& idTipoCliente.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimples(
// FiltroCliente.TIPOCLIENTE_ID, new Integer(idTipoCliente)));
}
if (nomeCliente != null && !nomeCliente.trim().equalsIgnoreCase("")) {
nomeCliente = nomeCliente.trim();
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
// filtroCliente.adicionarParametro(new ComparacaoTextoCompleto(
// FiltroCliente.NOME, nomeCliente));
} else {
// filtroCliente.adicionarParametro(new ComparacaoTexto(
// FiltroCliente.NOME, nomeCliente));
}
}
if (cnpj != null && !cnpj.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimples(
// FiltroCliente.CNPJ, cnpj));
}
if (cpf != null && !cpf.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimples(
// FiltroCliente.CPF, cpf));
}
if (rg != null && !rg.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimples(
// FiltroCliente.RG, rg));
}
if (cep != null && !cep.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimplesColecao(
// FiltroCliente.CEP, cep));
}
if (idMunicipio != null && !idMunicipio.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimplesColecao(
// FiltroCliente.MUNICIPIO_ID, new Integer(idMunicipio)));
}
if (codigoBairro != null && !codigoBairro.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimplesColecao(
// FiltroCliente.BAIRRO_CODIGO, new Integer(codigoBairro)));
}
if (idLogradouro != null && !idLogradouro.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
// filtroCliente.adicionarParametro(new ParametroSimplesColecao(
// FiltroCliente.LOGRADOURO, new Integer(idLogradouro)));
}
if (idEsferaPoder != null && !idEsferaPoder.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
//filtroCliente.setCampoOrderBy(FiltroCliente.NOME);
// 1� Passo - Pegar o total de registros atrav�s de um count da consulta que aparecer� na tela
Integer totalRegistros = (Integer) fachada.filtrarQuantidadeCliente(null,
cpf,
rg,
cnpj,
nomeCliente,
null,
cep,
idMunicipio,
codigoBairro,
idLogradouro,
null,
tipoPesquisa,
null,
idTipoCliente.toString(), idEsferaPoder);
// 2� Passo - Chamar a fun��o de Pagina��o passando o total de registros
retorno = this.controlarPaginacao(httpServletRequest, retorno,
totalRegistros);
// 3� Passo - Obter a cole��o da consulta que aparecer� na tela passando o numero de paginas
// da pesquisa que est� no request
Collection clientes = fachada.filtrarCliente(
null,
cpf,
rg,
cnpj,
nomeCliente,
null,
cep,
idMunicipio,
codigoBairro,
idLogradouro,
null,
tipoPesquisa,
null,
idTipoCliente.toString(),
idEsferaPoder,
(Integer) httpServletRequest
.getAttribute("numeroPaginasPesquisa"));
/* // 1� Passo - Pegar o total de registros atrav�s de um count da consulta que aparecer� na tela
Integer totalRegistros = fachada
.pesquisarClienteDadosClienteEnderecoCount(filtroCliente);
// 2� Passo - Chamar a fun��o de Pagina��o passando o total de registros
retorno = this.controlarPaginacao(httpServletRequest, retorno,
totalRegistros);
// 3� Passo - Obter a cole��o da consulta que aparecer� na tela passando o numero de paginas
// da pesquisa que est� no request
Collection clientes = fachada
.pesquisarClienteDadosClienteEndereco(filtroCliente, (Integer) httpServletRequest
.getAttribute("numeroPaginasPesquisa"));
*/
if (clientes == null || clientes.isEmpty()) {
// Nenhuma cliente cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "cliente");
} else {
// Coloca a cole��o na sess�o
sessao.setAttribute("colecaoCliente",clientes);
}
//Coloca na sessao o parametro tipoConsulta
String tipoConsulta = httpServletRequest.getParameter("tipoConsulta");
if(tipoConsulta == null || tipoConsulta.equals("")){
tipoConsulta = (String) sessao.getAttribute("tipoConsulta");
}
if(tipoConsulta != null && !tipoConsulta.equals("")){
sessao.setAttribute("tipoConsulta", tipoConsulta);
}else{
sessao.removeAttribute("tipoConsulta");
}
return retorno;
}
}