package gcom.gui.cadastro.imovel;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroImovelContaEnvio;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelContaEnvio;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.FiltroNomeConta;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.integracao.GisHelper;
import gcom.micromedicao.FiltroRota;
import gcom.micromedicao.Rota;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.FiltroParametro;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class ExibirInserirImovelConclusaoAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("inserirImovelConclusao");
//obtendo uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
DynaValidatorForm inserirImovelConclusaoActionForm =
(DynaValidatorForm) sessao.getAttribute("InserirImovelActionForm");
//Cria Filtros
FiltroImovelContaEnvio filtroImovelContaEnvio = new FiltroImovelContaEnvio();
//Cria cole�ao
Collection colecaoImovelEnnvioConta = null;
//Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
/*
* GIS
* ==============================================================================================================
*/
sessao.setAttribute("gis",true);
GisHelper gisHelper = (GisHelper) sessao.getAttribute("gisHelper");
if(gisHelper!= null){
carregarDadosGis(gisHelper,inserirImovelConclusaoActionForm,sessao,fachada);
}
String informacoesComplementares = (String) inserirImovelConclusaoActionForm.get("informacoesComplementares");
if(informacoesComplementares != null && informacoesComplementares.equals("")){
inserirImovelConclusaoActionForm.set("informacoesComplementares","");
}else {
inserirImovelConclusaoActionForm.set("informacoesComplementares",informacoesComplementares);
}
/*
* Carregamento inicial da tela respons�vel pelo redebimento das
* informa��es referentes ao local da ocorr�ncia (ABA N� 02)
* ============================================================================================================
*/
// //Faz a pesquisa de Ocupacao Tipo
// filtroImovelContaEnvio.adicionarParametro(new ParametroSimples(FiltroNomeConta.INDICADOR_USO,
// ConstantesSistema.INDICADOR_USO_ATIVO));
//
// filtroImovelContaEnvio.setCampoOrderBy(FiltroImovelContaEnvio.DESCRICAO);
//
// colecaoImovelEnnvioConta =
// fachada.pesquisar(filtroImovelContaEnvio, ImovelContaEnvio.class.getName());
//
// if (!colecaoImovelEnnvioConta.isEmpty()) {
//
// //Coloca a cole�ao da pesquisa na sessao
// sessao.setAttribute("colecaoImovelEnnvioConta", colecaoImovelEnnvioConta);
//
// /*
// * Alterado por Raphael Rossiter em 10/09/2007 (Analista: Aryed Lins)
// * OBJ: Marcar o indicador de emiss�o de extrato de faturamento para NAO EMITIR
// */
// inserirImovelConclusaoActionForm.set("extratoResponsavel", ConstantesSistema.NAO.toString());
//
// } else {
// throw new ActionServletException("atencao.naocadastrado",null, "Imovel Conta Envio");
// }
//Verifica se existe cliente responsavel
boolean eResponsavel = false;
//Testa se j� existe um clinte propriet�rio
if (sessao.getAttribute("imovelClientesNovos") == null) {
httpServletRequest.setAttribute("envioContaListar", "naoListar");
} else {
Collection imovelClientes = (Collection) sessao.getAttribute("imovelClientesNovos");
ClienteImovel clienteImovel = new ClienteImovel();
Iterator iteratorClienteImovel = imovelClientes.iterator();
while (iteratorClienteImovel.hasNext()) {
clienteImovel = null;
clienteImovel = (ClienteImovel) iteratorClienteImovel.next();
if (clienteImovel.getClienteRelacaoTipo().getDescricao().equalsIgnoreCase(ConstantesSistema.IMOVEL_ENVIO_CONTA)) {
httpServletRequest.setAttribute("envioContaListar","listar");
}
if (clienteImovel.getClienteRelacaoTipo() != null &&
clienteImovel.getClienteRelacaoTipo().getId() == 3 ){
httpServletRequest.setAttribute("contaEnvioObrigatorio","obrigatorio");
eResponsavel = true;
}else if ( clienteImovel.getClienteRelacaoTipo() != null && !eResponsavel &&
clienteImovel.getClienteRelacaoTipo().getId() != 3 ){
httpServletRequest.setAttribute("contaEnvioObrigatorio","opcional");
}
if ( sessao.getAttribute("imovelContaEnvio") != null && !sessao.getAttribute("imovelContaEnvio").equals("") ){
String envioConta = (String) sessao.getAttribute("imovelContaEnvio");
if ( ( envioConta.equals("4") || envioConta.equals("5") )
&& clienteImovel.getIndicadorNomeConta().compareTo(new Short("1")) == 0
&& ( clienteImovel.getCliente().getEmail() == null
|| clienteImovel.getCliente().getEmail().equals("") )){
throw new ActionServletException("atencao.email.nao.cadastrado");
}
}
}
}
//Faz a pesquisa de Ocupacao Tipo
filtroImovelContaEnvio.adicionarParametro(new ParametroSimples(
FiltroNomeConta.INDICADOR_USO,ConstantesSistema.INDICADOR_USO_ATIVO));
//Se existir cliente responsavel faz a pesquisa atraves do ICTE_ICCLIENTEREPONSAVEL = 1
if ( eResponsavel ){
filtroImovelContaEnvio.adicionarParametro(new ParametroSimples(
FiltroImovelContaEnvio.INDICADOR_CLIENTE_RESPONSAVEL, "1" ));
}//Se n�o existir cliente responsavel faz a pesquisa atraves do ICTE_ICCLIENTEREPONSAVEL = 2
else if( !eResponsavel ){
filtroImovelContaEnvio.adicionarParametro(new ParametroSimples(
FiltroImovelContaEnvio.INDICADOR_CLIENTE_RESPONSAVEL, "2" ));
}
filtroImovelContaEnvio.setCampoOrderBy(FiltroImovelContaEnvio.DESCRICAO);
colecaoImovelEnnvioConta =
this.getFachada().pesquisar(filtroImovelContaEnvio, ImovelContaEnvio.class.getName());
if (!colecaoImovelEnnvioConta.isEmpty()) {
httpServletRequest.setAttribute("colecaoImovelEnvioContaVazia", "false");
//Coloca a cole�ao da pesquisa na sessao
sessao.setAttribute("colecaoImovelEnnvioConta", colecaoImovelEnnvioConta);
/*
* Alterado por Raphael Rossiter em 10/09/2007 (Analista: Aryed Lins)
* OBJ: Marcar o indicador de emiss�o de extrato de faturamento para NAO EMITIR
*/
if (inserirImovelConclusaoActionForm.get("extratoResponsavel") != null &&
!inserirImovelConclusaoActionForm.get("extratoResponsavel").equals("") &&
inserirImovelConclusaoActionForm.get("extratoResponsavel").equals(ConstantesSistema.SIM.toString())){
inserirImovelConclusaoActionForm.set("extratoResponsavel", ConstantesSistema.SIM.toString());
}else{
inserirImovelConclusaoActionForm.set("extratoResponsavel", ConstantesSistema.NAO.toString());
}
} else {
/*throw new ActionServletException("atencao.naocadastrado",null,"Im�vel Conta Envio");*/
if ( !eResponsavel ){
httpServletRequest.setAttribute("colecaoImovelEnvioContaVazia", "true");
}else if ( eResponsavel ){
throw new ActionServletException("atencao.naocadastrado",null,"Im�vel Conta Envio");
}
}
//Cria variaveis
String idImovel = (String) inserirImovelConclusaoActionForm.get("idImovel");
String idFuncionario = (String) inserirImovelConclusaoActionForm.get("idFuncionario");
String idRota = (String) inserirImovelConclusaoActionForm.get("idRota");
String idRotaAlternativa = (String) inserirImovelConclusaoActionForm.get("idRotaAlternativa");
//Cria Filtros
FiltroImovel filtroImovel = new FiltroImovel();
//Objetos que ser�o retornados pelo Hibernate
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTitulo");
filtroImovel.adicionarParametro(new ParametroSimplesDiferenteDe(
FiltroImovel.INDICADOR_IMOVEL_EXCLUIDO,Imovel.IMOVEL_EXCLUIDO, FiltroParametro.CONECTOR_OR,2));
filtroImovel.adicionarParametro(new ParametroNulo(FiltroImovel.INDICADOR_IMOVEL_EXCLUIDO));
Collection imoveis = null;
if (idImovel != null && !idImovel.trim().equalsIgnoreCase("")) {
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, new Integer(idImovel.trim())));
imoveis = fachada.pesquisar(filtroImovel, Imovel.class.getName());
if (imoveis != null && !imoveis.isEmpty()) {
filtroImovel = new FiltroImovel();
filtroImovel.limparListaParametros();
//Cria Variaveis
String idLocalidade = (String) inserirImovelConclusaoActionForm.get("idLocalidade");
String idSetorComercial = (String) inserirImovelConclusaoActionForm.get("idSetorComercial");
String idQuadra = (String) inserirImovelConclusaoActionForm.get("idQuadra");
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID,idImovel.trim()));
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.LOCALIDADE_ID,new Integer(idLocalidade)));
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.SETOR_COMERCIAL_CODIGO,new Integer(idSetorComercial)));
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.QUADRA_NUMERO,new Integer(idQuadra)));
Collection colecaoImovel = null;
colecaoImovel = fachada.pesquisar(filtroImovel,Imovel.class.getName());
if(colecaoImovel == null || colecaoImovel.isEmpty()){
throw new ActionServletException("atencao.imovel_principal.inexistente.quadra");
}
sessao.setAttribute("imoveisPrincipal", imoveis);
httpServletRequest.setAttribute("valorMatriculaImovelPrincipal",
fachada.pesquisarInscricaoImovel(new Integer(idImovel.trim())));
httpServletRequest.setAttribute("idImovelPrincipalNaoEncontrado", null);
}else {
httpServletRequest.setAttribute("idImovelPrincipalNaoEncontrado", "true");
httpServletRequest.setAttribute("valorMatriculaImovelPrincipal", "IMOVEL INEXISTENTE");
}
}
if(idFuncionario != null && !idFuncionario.trim().equals("")){
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroFuncionario.ID, idFuncionario));
Collection colecaoFuncionario =
this.getFachada().pesquisar(filtroFuncionario, Funcionario.class.getSimpleName());
if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) {
Funcionario funcionario = (Funcionario) Util.retonarObjetoDeColecao(colecaoFuncionario);
httpServletRequest.setAttribute("idImovelPrincipalEncontrado","true");
inserirImovelConclusaoActionForm.set("idFuncionario",funcionario.getId().toString());
inserirImovelConclusaoActionForm.set("nomeFuncionario",funcionario.getNome());
}else{
inserirImovelConclusaoActionForm.set("idFuncionario","");
inserirImovelConclusaoActionForm.set("nomeFuncionario","Funcion�rio Inexistente");
}
}
if (idRota != null && !idRota.trim().equals("")) {
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, idRota));
Collection colecaoRotas = fachada.pesquisar(filtroRota, Rota.class.getName());
if (colecaoRotas != null && !colecaoRotas.isEmpty()) {
Rota rota = (Rota) Util.retonarObjetoDeColecao(colecaoRotas);
inserirImovelConclusaoActionForm.set("codigoRota", rota.getCodigo().toString());
}
}
if (idRotaAlternativa != null && !idRotaAlternativa.trim().equals("")) {
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, idRotaAlternativa));
Collection colecaoRotas = fachada.pesquisar(filtroRota, Rota.class.getName());
if (colecaoRotas != null && !colecaoRotas.isEmpty()) {
Rota rota = (Rota) Util.retonarObjetoDeColecao(colecaoRotas);
inserirImovelConclusaoActionForm.set("codigoRotaAlternativa", rota.getCodigo().toString());
}
}
return retorno;
}
//=================================================================================================================
public void carregarDadosGis(
GisHelper gisHelper,
DynaValidatorForm inserirImovelConclusaoActionForm,
HttpSession sessao, Fachada fachada) {
String nnCoordenadaNorte = gisHelper.getNnCoordenadaNorte();
String nnCoordenadaLeste = gisHelper.getNnCoordenadaLeste();
inserirImovelConclusaoActionForm.set("cordenadasUtmX",nnCoordenadaLeste);
inserirImovelConclusaoActionForm.set("cordenadasUtmY",nnCoordenadaNorte);
sessao.removeAttribute("gisHelper");
}
}