package gcom.gui.cadastro.imovel;
import gcom.arrecadacao.ContratoDemanda;
import gcom.arrecadacao.bean.ContratoDemandaHelper;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroImovelCadastroOcorrencia;
import gcom.cadastro.imovel.FiltroImovelEloAnormalidade;
import gcom.cadastro.imovel.FiltroImovelImagem;
import gcom.cadastro.imovel.FiltroImovelRamoAtividade;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelCadastroOcorrencia;
import gcom.cadastro.imovel.ImovelEloAnormalidade;
import gcom.cadastro.imovel.ImovelImagem;
import gcom.cadastro.imovel.ImovelRamoAtividade;
import gcom.fachada.Fachada;
import gcom.faturamento.FiltroContratoDemanda;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
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;
/**
* [UC0473] Consultar Imovel
*
* @author Rafael Santos
* @since 07/09/2006
*
*/
public class ExibirConsultarImovelDadosComplementaresAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
HttpSession sessao = httpServletRequest.getSession(false);
ConsultarImovelActionForm consultarImovelActionForm = (ConsultarImovelActionForm) actionForm;
if (isLimparDadosTela(httpServletRequest)) {
httpServletRequest.removeAttribute("idImovelDadosComplementaresNaoEncontrado");
limparFormSessao(consultarImovelActionForm, sessao);
}else if( isImovelInformadoTelaDadosAdicionais(consultarImovelActionForm)
|| isImovelInformadoOutraTela(sessao) ){
consultarImovelActionForm.setIdImovelDadosComplementares(
definirIdImovelASerPesquisado(consultarImovelActionForm, sessao, httpServletRequest));
Imovel imovel = obterImovelASerPesquisado(consultarImovelActionForm, sessao);
boolean isNovoImovelPesquisado = isNovoImovelPesquisado(consultarImovelActionForm, sessao);
if (imovel != null) {
sessao.setAttribute("imovelDadosComplementares", imovel);
sessao.setAttribute("idImovelPrincipalAba", imovel.getId().toString());
consultarImovelActionForm.setIdImovelDadosComplementares(imovel.getId().toString());
if (imovel.getIndicadorExclusao().equals(ConstantesSistema.SIM)) {
httpServletRequest.setAttribute("imovelExcluido", true);
}
if (isNovoImovelPesquisado) {
httpServletRequest.removeAttribute("idImovelDadosComplementaresNaoEncontrado");
setarDadosNoFormESessao(consultarImovelActionForm, imovel,sessao);
}
} else {
limparFormSessao(consultarImovelActionForm, sessao);
httpServletRequest.setAttribute("idImovelDadosComplementaresNaoEncontrado", "true");
consultarImovelActionForm.setMatriculaImovelDadosComplementares("IM�VEL INEXISTENTE");
}
} else {
String idAux = consultarImovelActionForm.getIdImovelDadosComplementares();
httpServletRequest.removeAttribute("idImovelDadosComplementaresNaoEncontrado");
limparFormSessao(consultarImovelActionForm, sessao);
consultarImovelActionForm.setIdImovelDadosComplementares(idAux);
}
return actionMapping.findForward("consultarImovelDadosComplementares");
}
/**
* Esse m�todo seta os dados necess�rios do Imovel
* no form e alguns na sess�o (cole��es).
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private void setarDadosNoFormESessao(ConsultarImovelActionForm consultarImovelActionForm,
Imovel imovel,HttpSession sessao) {
// seta na tela a inscri��o do imovel
consultarImovelActionForm.setMatriculaImovelDadosComplementares(
this.getFachada().pesquisarInscricaoImovelExcluidoOuNao(new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
// seta a situa��o de agua
consultarImovelActionForm.setSituacaoAguaDadosComplementares(
imovel.getLigacaoAguaSituacao().getDescricao());
// seta a situa��o de esgoto
consultarImovelActionForm.setSituacaoEsgotoDadosComplementares(
imovel.getLigacaoEsgotoSituacao().getDescricao());
// consumo tarifa
if (imovel.getConsumoTarifa() != null) {
consultarImovelActionForm.setTarifaConsumoDadosComplementares(
imovel.getConsumoTarifa().getDescricao());
}
// numero retificacao
if (imovel.getNumeroRetificacao() != null) {
consultarImovelActionForm.setQuantidadeRetificacoesDadosComplementares(
imovel.getNumeroRetificacao().toString());
}
// numero parcelamento
if (imovel.getNumeroParcelamento() != null) {
consultarImovelActionForm.setQuantidadeParcelamentosDadosComplementares(
imovel.getNumeroParcelamento().toString());
}
// numero reparcelamento
if (imovel.getNumeroReparcelamento() != null) {
consultarImovelActionForm.setQuantidadeReparcelamentoDadosComplementares(
imovel.getNumeroReparcelamento().toString());
}
// numero reparcelamento consecutivos
if (imovel.getNumeroReparcelamentoConsecutivos() != null) {
consultarImovelActionForm.setQuantidadeReparcelamentoConsecutivosDadosComplementares(
imovel.getNumeroReparcelamentoConsecutivos().toString());
}
// cobranca situacao
// if (imovel.getCobrancaSituacao() != null) {
// consultarImovelActionForm.setSituacaoCobrancaDadosComplementares(
// imovel.getCobrancaSituacao().getDescricao());
// }else{
// consultarImovelActionForm.setSituacaoCobrancaDadosComplementares(null);
// }
// funcionario
if (imovel.getFuncionario() != null) {
consultarImovelActionForm.setIdFuncionario(""+imovel.getFuncionario().getId());
consultarImovelActionForm.setNomeFuncionario(imovel.getFuncionario().getNome());
} else {
consultarImovelActionForm.setIdFuncionario("");
consultarImovelActionForm.setNomeFuncionario("");
}
// cadastro ocorrencia
if (imovel.getCadastroOcorrencia() != null) {
consultarImovelActionForm.setDescricaoOcorrenciaDadosComplementares(
imovel.getCadastroOcorrencia().getDescricao());
}
// elo anormalidade
if (imovel.getEloAnormalidade() != null) {
consultarImovelActionForm.setDescricaoAnormalidadeDadosComplementares(
imovel.getEloAnormalidade().getDescricao());
}
//descricao das informacoes complementares
if(imovel.getInformacoesComplementares() != null){
consultarImovelActionForm.setInformacoesComplementares(imovel.getInformacoesComplementares());
} else {
consultarImovelActionForm.setInformacoesComplementares("");
}
sessao.setAttribute("colecaoVencimentosAlternativos",
this.getFachada().pesquisarVencimentoAlternativoImovel(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
sessao.setAttribute("colecaoDebitosAutomaticos",
this.getFachada().pesquisarDebitosAutomaticosImovel(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
sessao.setAttribute("colecaoFaturamentosSituacaoHistorico",
this.getFachada().pesquisarFaturamentosSituacaoHistorico(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
sessao.setAttribute("colecaoCobrancasSituacaoHistorico",
this.getFachada().pesquisarCobrancasSituacaoHistorico(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
setarColecaoCadastroOcorrenciaSessao(consultarImovelActionForm, sessao);
setarColecaoEloAnormalidadeSessao(consultarImovelActionForm, sessao);
setarColecaoImovelRamoAtividadeSessao(imovel, sessao);
setarColecaoDadosImovelCobrancaSituacaoSessao(consultarImovelActionForm,sessao);
setarColecaoDadosNegativadorMovimentoRegSessao(consultarImovelActionForm,sessao);
setarColecaoContratoDemandaHelper(imovel,sessao);
setarColecaoMatriculasAssociadas(imovel,sessao);
pesquisarImovelImagens(imovel, sessao);
}
/**
* Esse m�todo consulta e seta na sess�o
* uma cole��o de elo anormalidade do imovel.
*
*@since 05/10/2009
*@author Marlon Patrick
*/
private void setarColecaoImovelRamoAtividadeSessao(Imovel imovel,
HttpSession sessao) {
FiltroImovelRamoAtividade filtroImovelRamoAtividade = new FiltroImovelRamoAtividade();
filtroImovelRamoAtividade.adicionarCaminhoParaCarregamentoEntidade("comp_id.imovel");
filtroImovelRamoAtividade.adicionarCaminhoParaCarregamentoEntidade("comp_id.ramo_atividade");
filtroImovelRamoAtividade.adicionarParametro(new ParametroSimples(
FiltroImovelRamoAtividade.IMOVEL_ID, new Integer(imovel.getId())));
sessao.setAttribute("colecaoImovelRamosAtividade",
this.getFachada().pesquisar(filtroImovelRamoAtividade,
ImovelRamoAtividade.class.getName()));
}
/**
* Esse m�todo consulta e seta na sess�o
* uma cole��o de elo anormalidade do imovel.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private void setarColecaoEloAnormalidadeSessao(
ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao) {
FiltroImovelEloAnormalidade filtroImovelEloAnormalidade = new FiltroImovelEloAnormalidade();
filtroImovelEloAnormalidade.adicionarParametro(
new ParametroSimples(FiltroImovelEloAnormalidade.IMOVEL_ID,
consultarImovelActionForm.getIdImovelDadosComplementares().trim()));
filtroImovelEloAnormalidade.setCampoOrderBy(FiltroImovelEloAnormalidade.DATA_ANORMALIDADE);
filtroImovelEloAnormalidade.adicionarCaminhoParaCarregamentoEntidade("eloAnormalidade");
sessao.setAttribute("colecaoImovelEloAnormalidade",
this.getFachada().pesquisar(filtroImovelEloAnormalidade,
ImovelEloAnormalidade.class.getName()));
}
/**
* Esse m�todo consulta e seta na sess�o
* uma cole��o de cadastro ocorrencia do imovel.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private void setarColecaoCadastroOcorrenciaSessao(
ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao) {
FiltroImovelCadastroOcorrencia filtroImovelCadastroOcorrencia =
new FiltroImovelCadastroOcorrencia();
filtroImovelCadastroOcorrencia.adicionarParametro(
new ParametroSimples(FiltroImovelCadastroOcorrencia.IMOVEL_ID,
consultarImovelActionForm.getIdImovelDadosComplementares().trim()));
filtroImovelCadastroOcorrencia.setCampoOrderBy(FiltroImovelCadastroOcorrencia.DATA_OCORRENCIA);
filtroImovelCadastroOcorrencia.adicionarCaminhoParaCarregamentoEntidade("cadastroOcorrencia");
sessao.setAttribute("colecaoImovelCadastroOcorrencia",
this.getFachada().pesquisar(filtroImovelCadastroOcorrencia,
ImovelCadastroOcorrencia.class.getName()));
}
/**
*Esse m�todo limpa todos os atributos do form
*e os atributos na sesss�o
*que s�o usados pelo action e/ou jsp.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private void limparFormSessao(ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao) {
sessao.removeAttribute("imovelDadosComplementares");
sessao.removeAttribute("colecaoVencimentosAlternativos");
sessao.removeAttribute("colecaoDebitosAutomaticos");
sessao.removeAttribute("colecaoFaturamentosSituacaoHistorico");
sessao.removeAttribute("colecaoCobrancasSituacaoHistorico");
sessao.removeAttribute("idImovelPrincipalAba");
sessao.removeAttribute("colecaoImovelCadastroOcorrencia");
sessao.removeAttribute("colecaoImovelEloAnormalidade");
sessao.removeAttribute("colecaoImovelRamosAtividade");
sessao.removeAttribute("contratoDemandaHelper");
sessao.removeAttribute("colecaoMatriculasAssociadas");
sessao.removeAttribute("colecaoDadosImovelCobrancaSituacao");
sessao.removeAttribute("colecaoDadosNegativadorMovimentoReg");
consultarImovelActionForm.setIdImovelDadosComplementares(null);
consultarImovelActionForm.setIdImovelDadosCadastrais(null);
consultarImovelActionForm.setIdImovelAnaliseMedicaoConsumo(null);
consultarImovelActionForm.setIdImovelHistoricoFaturamento(null);
consultarImovelActionForm.setIdImovelDebitos(null);
consultarImovelActionForm.setIdImovelPagamentos(null);
consultarImovelActionForm.setIdImovelDevolucoesImovel(null);
consultarImovelActionForm.setIdImovelDocumentosCobranca(null);
consultarImovelActionForm.setIdImovelParcelamentosDebitos(null);
consultarImovelActionForm.setIdImovelRegistroAtendimento(null);
consultarImovelActionForm.setImovIdAnt(null);
consultarImovelActionForm.setMatriculaImovelDadosComplementares(null);
consultarImovelActionForm.setSituacaoAguaDadosComplementares(null);
consultarImovelActionForm.setSituacaoEsgotoDadosComplementares(null);
consultarImovelActionForm.setTarifaConsumoDadosComplementares(null);
consultarImovelActionForm.setQuantidadeRetificacoesDadosComplementares(null);
consultarImovelActionForm.setQuantidadeParcelamentosDadosComplementares(null);
consultarImovelActionForm.setQuantidadeReparcelamentoDadosComplementares(null);
consultarImovelActionForm.setQuantidadeReparcelamentoConsecutivosDadosComplementares(null);
consultarImovelActionForm.setDescricaoOcorrenciaDadosComplementares(null);
consultarImovelActionForm.setIdFuncionario(null);
consultarImovelActionForm.setNomeFuncionario(null);
consultarImovelActionForm.setDescricaoAnormalidadeDadosComplementares(null);
consultarImovelActionForm.setInformacoesComplementares(null);
}
/**
* Caso o usu�rio tenha clicado no bot�o de limpar
* esse m�todo retornar� true.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private boolean isLimparDadosTela(HttpServletRequest httpServletRequest) {
return Util.verificarNaoVazio(httpServletRequest.getParameter("limparForm"));
}
/**
* Esse m�todo verifica se j� foi informado um im�vel em outra tela.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private boolean isImovelInformadoOutraTela(HttpSession sessao) {
return Util.verificarNaoVazio((String)sessao.getAttribute("idImovelPrincipalAba"));
}
/**
* Esse m�todo verifica se o im�vel foi informado na tela
* de Dados Adicionais
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private boolean isImovelInformadoTelaDadosAdicionais(ConsultarImovelActionForm consultarImovelActionForm) {
return Util.verificarNaoVazio(consultarImovelActionForm.getIdImovelDadosComplementares());
}
/**
* Esse m�todo retorna o id do im�vel a ser pesquisado,
* verificando se � o id possivelmente informado pelo usu�rio na tela
* de dados adicionais ou se o id j� informado em uma outra tela.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private String definirIdImovelASerPesquisado(
ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao, HttpServletRequest httpServletRequest) {
String idImovelPrincipalAba = (String)sessao.getAttribute("idImovelPrincipalAba");
if( isImovelInformadoTelaDadosAdicionais(consultarImovelActionForm)
&& isImovelInformadoOutraTela(sessao)){
if( !Util.verificarNaoVazio(httpServletRequest.getParameter("indicadorNovo")) ){
return idImovelPrincipalAba;
}
}else if(isImovelInformadoOutraTela(sessao)){
return idImovelPrincipalAba;
}
return consultarImovelActionForm.getIdImovelDadosComplementares();
}
/**
* Consulta o Imovel com todas as informa��es necess�rias,
* ou simplesmetne pega o Imovel da sess�o caso o mesmo j�
* tenha sido pesquisado.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private Imovel obterImovelASerPesquisado(ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao) {
Imovel imovel = null;
if(sessao.getAttribute("imovelDadosComplementares") == null){
imovel = Fachada.getInstancia().consultarImovelDadosComplementares(new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim()));
}else{
imovel = (Imovel) sessao.getAttribute("imovelDadosComplementares");
if( !imovel.getId().toString().equals(consultarImovelActionForm.getIdImovelDadosComplementares().trim()) ){
imovel = Fachada.getInstancia().consultarImovelDadosComplementares(new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim()));
}
}
return imovel;
}
/**
* Esse m�todo retorna true se foi necess�rio consultar um novo imovel.
* Caso o im�vel seja o mesmo j� consultado anteriormente ele retorna false.
*
*@since 22/09/2009
*@author Marlon Patrick
*/
private boolean isNovoImovelPesquisado(ConsultarImovelActionForm consultarImovelActionForm,
HttpSession sessao) {
if(sessao.getAttribute("imovelDadosComplementares") == null){
return true;
}
Imovel imovelAux = (Imovel) sessao.getAttribute("imovelDadosComplementares");
if( !imovelAux.getId().toString().equals(consultarImovelActionForm.getIdImovelDadosComplementares().trim()) ){
return true;
}
return false;
}
/**
*@since 03/05/2010
*@author Vivianne Sousa
*/
private void setarColecaoDadosImovelCobrancaSituacaoSessao(
ConsultarImovelActionForm consultarImovelActionForm,HttpSession sessao) {
sessao.setAttribute("colecaoDadosImovelCobrancaSituacao",
this.getFachada().pesquisarDadosImovelCobrancaSituacaoPorImovel(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
}
/**
*@since 03/05/2010
*@author Vivianne Sousa
*/
private void setarColecaoDadosNegativadorMovimentoRegSessao(
ConsultarImovelActionForm consultarImovelActionForm,HttpSession sessao) {
sessao.setAttribute("colecaoDadosNegativadorMovimentoReg",
this.getFachada().consultarDadosNegativadorMovimentoReg(
new Integer(consultarImovelActionForm.getIdImovelDadosComplementares().trim())));
}
/**
*@since 06/01/2011
*@author Mariana Victor
*/
private void setarColecaoContratoDemandaHelper(Imovel imovel,HttpSession sessao) {
ContratoDemandaHelper contratoDemandaHelper = null;
FiltroContratoDemanda filtroContratoDemanda = new FiltroContratoDemanda();
filtroContratoDemanda.adicionarParametro(
new ParametroSimples(FiltroContratoDemanda.IMOVEL, imovel.getId()));
filtroContratoDemanda.adicionarParametro(
new ParametroNulo(FiltroContratoDemanda.DATACONTRATOENCERRAMENTO));
Collection colecaoContratoDemanda = this.getFachada().pesquisar(
filtroContratoDemanda, ContratoDemanda.class.getName());
if (colecaoContratoDemanda != null && !colecaoContratoDemanda.isEmpty()) {
Object[] consumoContratado = this.getFachada().consultarConsumoCadastrado(imovel.getId());
if (consumoContratado != null) {
contratoDemandaHelper = new ContratoDemandaHelper();
contratoDemandaHelper.setContratoDemanda((ContratoDemanda) Util.retonarObjetoDeColecao(colecaoContratoDemanda));
contratoDemandaHelper.setConsumoContratado(consumoContratado[0].toString());
contratoDemandaHelper.setValorTarifa(Util.formatarBigDecimalParaStringComVirgula(
(BigDecimal) consumoContratado[1]));
}
}
if (contratoDemandaHelper != null) {
sessao.setAttribute("contratoDemandaHelper", contratoDemandaHelper);
} else {
sessao.removeAttribute("contratoDemandaHelper");
}
}
/**
*@since 06/01/2011
*@author Mariana Victor
*/
private void setarColecaoMatriculasAssociadas(Imovel imovel, HttpSession sessao) {
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(
new ParametroSimples(FiltroImovel.ID, imovel.getId()));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(
FiltroImovel.CONSUMO_TARIFA);
Collection colecaoImovel = this.getFachada().pesquisar(
filtroImovel, Imovel.class.getName());
if (colecaoImovel != null && !colecaoImovel.isEmpty()) {
Imovel imovelRetornado = (Imovel) Util.retonarObjetoDeColecao(colecaoImovel);
Collection colecaoMatriculasAssociadas = this.getFachada().consultarMatriculasAssociadas(
imovelRetornado.getConsumoTarifa().getId(), imovelRetornado.getId());
if (colecaoMatriculasAssociadas != null && !colecaoMatriculasAssociadas.isEmpty()) {
sessao.setAttribute("colecaoMatriculasAssociadas", colecaoMatriculasAssociadas);
} else {
sessao.removeAttribute("colecaoMatriculasAssociadas");
}
}
}
@SuppressWarnings("unchecked")
private void pesquisarImovelImagens(Imovel imovel, HttpSession sessao) {
FiltroImovelImagem filtro = new FiltroImovelImagem();
filtro.adicionarParametro(new ParametroSimples(FiltroImovelImagem.IMOVEL_ID, imovel.getId()));
sessao.setAttribute("colecaoImagens", Fachada.getInstancia().pesquisar(filtro, ImovelImagem.class.getName()));
}
}