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.FiltroImovelPerfil;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelContaEnvio;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.sistemaparametro.SistemaParametro;
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 ExibirAtualizarImovelConclusaoAction 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("atualizarImovelConclusao");
// obtendo uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
DynaValidatorForm inserirImovelConclusaoActionForm = (DynaValidatorForm) actionForm;
/*
* GIS
* ==============================================================================================================
*/
sessao.setAttribute("gis",true);
GisHelper gisHelper = (GisHelper) sessao.getAttribute("gisHelper");
if(gisHelper!= null){
carregarDadosGis(gisHelper,inserirImovelConclusaoActionForm,sessao,this.getFachada());
}
//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() != 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 ( inserirImovelConclusaoActionForm.get("imovelContaEnvio") != null
&& !inserirImovelConclusaoActionForm.get("imovelContaEnvio").equals("") ){
String envioConta = (String) inserirImovelConclusaoActionForm.get("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");
}
}
// verifica se h� cliente respons�vel para o im�vel e verifica
// e o campo "Extrato para responsavel" da aba de "Conclus�o" deve
// ser marcado obrigatorimente para "Emitir" e sem a possibilidade de alteracao.
if (clienteImovel.getClienteRelacaoTipo().getDescricao().equalsIgnoreCase(ConstantesSistema.IMOVEL_ENVIO_CONTA)) {
httpServletRequest.setAttribute("envioContaListar","listar");
}
}
}
String valorBloqueio = "naoSetarOpcaoEmitirComoObrigatorio";
String perfilImovel = (String) inserirImovelConclusaoActionForm.get("perfilImovel");
if (perfilImovel != null && !perfilImovel.equals("")) {
ImovelPerfil imovelPerfilProgramaEspecial = this.getSistemaParametro().getPerfilProgramaEspecial();
if(imovelPerfilProgramaEspecial != null){
if(perfilImovel.equals(""+imovelPerfilProgramaEspecial.getId())){
valorBloqueio = "setarOpcaoEmitirComoObrigatorio";
}
}
}
httpServletRequest.setAttribute("setarEmitirObrigatorio",valorBloqueio);
// Cria Filtros
FiltroImovelContaEnvio filtroImovelContaEnvio = new FiltroImovelContaEnvio();
//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);
//Cria cole�ao
Imovel imovel = (Imovel) sessao.getAttribute("imovelAtualizacao");
Collection colecaoImovelEnvioConta = null;
colecaoImovelEnvioConta =
this.getFachada().pesquisar(filtroImovelContaEnvio, ImovelContaEnvio.class.getName());
if (!colecaoImovelEnvioConta.isEmpty()) {
//Coloca a cole�ao da pesquisa na sessao
sessao.setAttribute("colecaoImovelEnnvioConta", colecaoImovelEnvioConta);
/*
* 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.set("extratoResponsavel", inserirImovelConclusaoActionForm.get("extratoResponsavel") );
}else if (imovel.getIndicadorEmissaoExtratoFaturamento() != null){
inserirImovelConclusaoActionForm.set("extratoResponsavel", imovel.getIndicadorEmissaoExtratoFaturamento());
}
httpServletRequest.setAttribute("colecaoImovelEnvioContaVazia", "false");
} else {
if ( !eResponsavel ){
httpServletRequest.setAttribute("colecaoImovelEnvioContaVazia", "true");
}else if ( eResponsavel ){
throw new ActionServletException("atencao.naocadastrado",null,"Im�vel Conta Envio");
}
}
if (imovel.getImovelPerfil() != null &&
imovel.getImovelPerfil().getId().equals(ConstantesSistema.INDICADOR_TARIFA_SOCIAL)) {
FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();
filtroImovelPerfil.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.ID, ConstantesSistema.INDICADOR_TARIFA_SOCIAL));
ImovelPerfil imovelPerfil = (ImovelPerfil)
Util.retonarObjetoDeColecao(this.getFachada().pesquisar(filtroImovelPerfil, ImovelPerfil.class.getName()));
if (imovelPerfil.getIndicadorBloqueaDadosSocial().equals(ConstantesSistema.SIM)){
httpServletRequest.setAttribute("tarifaSocial", "1");
} else{
httpServletRequest.setAttribute("tarifaSocial", "0");
}
} else {
httpServletRequest.setAttribute("tarifaSocial", "0");
}
if(imovel.getInformacoesComplementares()!= null && !imovel.getInformacoesComplementares().equals("")){
inserirImovelConclusaoActionForm.set("informacoesComplementares", imovel.getInformacoesComplementares());
}else{
inserirImovelConclusaoActionForm.set("informacoesComplementares", "");
}
imovel = null;
String pesquisar = httpServletRequest.getParameter("pesquisar");
// Cria variaveis
String idImovel = (String) inserirImovelConclusaoActionForm.get("idImovel");
if (pesquisar != null && !pesquisar.equalsIgnoreCase("")) {
// Cria variaveis
// Cria Filtros
FiltroImovel filtroImovel = new FiltroImovel();
// Objetos que ser�o retornados pelo Hibernate
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.logradouroCep.logradouro.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.enderecoReferencia");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.setorComercial");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.perimetroInicial.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.perimetroInicial.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.perimetroFinal.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.perimetroFinal.logradouroTitulo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPrincipal.imovelPrincipal");
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)));
Imovel imovelAtualizado = (Imovel) sessao.getAttribute("imovelAtualizacao");
// testa se o imovel a ser principal � o mesmo que esta sendo
// atualizado
if (idImovel.equals(imovelAtualizado.getId().toString())) {
// atualizarImovelPrincipalActionForm.set("idImovel","");
throw new ActionServletException("atencao.imovel.principal.igual.atualizado");
}
imoveis = this.getFachada().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");
String informacoesComplementares = (String) inserirImovelConclusaoActionForm.get("informacoesComplementares");
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)));
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.INFORMACOES_COMPLEMENTARES,informacoesComplementares));
Collection colecaoImovel = null;
colecaoImovel = this.getFachada().pesquisar(filtroImovel,Imovel.class.getName());
if(colecaoImovel == null || colecaoImovel.isEmpty()){
throw new ActionServletException("atencao.imovel_principal.inexistente.quadra");
}
sessao.setAttribute("idImoveilPrincipal", ((Imovel) imoveis.iterator().next()).getId().toString());
sessao.setAttribute("imoveisPrincipal", imoveis);
inserirImovelConclusaoActionForm.set("idImovel", idImovel);
inserirImovelConclusaoActionForm.set("informacoesComplementares",((Imovel) imoveis.iterator().next()).getInformacoesComplementares());
httpServletRequest.setAttribute("valorMatriculaImovelPrincipal",
this.getFachada().pesquisarInscricaoImovel(new Integer(idImovel.trim())));
httpServletRequest.setAttribute("idImovelPrincipalNaoEncontrado", null);
} else {
httpServletRequest.setAttribute("idImovelPrincipalNaoEncontrado", "true");
httpServletRequest.setAttribute("valorMatriculaImovelPrincipal", "IMOVEL INEXISTENTE");
}
}
} else {
if(idImovel != null && !idImovel.equals("")){
inserirImovelConclusaoActionForm.set("idImovel", idImovel);
httpServletRequest.setAttribute("valorMatriculaImovelPrincipal",
this.getFachada().pesquisarInscricaoImovel(new Integer(idImovel.trim())));
}
}
String remover = httpServletRequest.getParameter("remover");
String idFuncionario = (String) inserirImovelConclusaoActionForm.get("idFuncionario");
if (remover != null && !remover.equalsIgnoreCase("")) {
//Cria variaveis
Collection imoveisPrincipaisNovos = (Collection) sessao.getAttribute("imoveisPrincipal");
inserirImovelConclusaoActionForm.set("idImovel", "");
if (imoveisPrincipaisNovos != null && !imoveisPrincipaisNovos.equals("")) {
Iterator ImovelPrincipalIterator = imoveisPrincipaisNovos.iterator();
while (ImovelPrincipalIterator.hasNext()) {
ImovelPrincipalIterator.next();
ImovelPrincipalIterator.remove();
inserirImovelConclusaoActionForm.set("idImovel", "");
sessao.removeAttribute("idImoveilPrincipal");
}
}
}
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");
}
}
String idRota = (String) inserirImovelConclusaoActionForm.get("idRota");
if (idRota != null && !idRota.trim().equals("")) {
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, idRota));
Collection colecaoRotas = this.getFachada().pesquisar(filtroRota, Rota.class.getName());
if (colecaoRotas != null && !colecaoRotas.isEmpty()) {
Rota rota = (Rota) Util.retonarObjetoDeColecao(colecaoRotas);
inserirImovelConclusaoActionForm.set("codigoRota", rota.getCodigo().toString());
}
}
String idRotaAlternativa = (String) inserirImovelConclusaoActionForm.get("idRotaAlternativa");
if (idRotaAlternativa != null && !idRotaAlternativa.trim().equals("")) {
FiltroRota filtroRota = new FiltroRota();
filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, idRotaAlternativa));
Collection colecaoRotas = this.getFachada().pesquisar(filtroRota, Rota.class.getName());
if (colecaoRotas != null && !colecaoRotas.isEmpty()) {
Rota rota = (Rota) Util.retonarObjetoDeColecao(colecaoRotas);
inserirImovelConclusaoActionForm.set("codigoRotaAlternativa", rota.getCodigo().toString());
}
}
/**
* Verifica se o perfil do imovel � do programa especial e desabilita o extrato para responsavel
*/
SistemaParametro sistemaParametro = this.getFachada().pesquisarParametrosDoSistema();
if ( sistemaParametro.getPerfilProgramaEspecial() != null &&
sistemaParametro.getPerfilProgramaEspecial().getId() != null &&
(sistemaParametro.getPerfilProgramaEspecial().getId().intValue() ==
new Integer(perfilImovel).intValue() ) ) {
sessao.setAttribute("bloquearExtratoParaResponsavel", true);
//inserirImovelConclusaoActionForm.set("extratoResponsavel", "2");
} else {
sessao.setAttribute("bloquearExtratoParaResponsavel", "");
}
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");
}
}