package gcom.gui.relatorio.cadastro.imovel;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroImovelPerfil;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroQuadra;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC0727] Gerar Relat�rio de Im�veis com Faturas em Atraso
*
* @author Bruno Barros
*
* @date 12/12/2007
*/
public class ExibirGerarRelatorioImoveisConsumoMedioAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirGerarRelatorioImoveisConsumoMedio");
GerarRelatorioImoveisConsumoMedioActionForm form = (GerarRelatorioImoveisConsumoMedioActionForm) actionForm;
// Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest
.getParameter("objetoConsulta");
// Verificamos se foi chamado do menu
if (httpServletRequest.getParameter("menu") != null
&& ((String) httpServletRequest.getParameter("menu"))
.equals("sim")) {
form.reset();
}
SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema();
String mesAno = Util.formatarAnoMesParaMesAno(sistemaParametro.getAnoMesFaturamento());
form.setAnoMesReferencia(mesAno);
// Pesquisar Localidade
if (objetoConsulta != null
&& !objetoConsulta.trim().equals("")
&& (objetoConsulta.trim().equals("1") || objetoConsulta.trim()
.equals("3"))) {
// Faz a consulta de Localidade
this.pesquisarLocalidade(form, objetoConsulta);
}
// Pesquisar Setor Comercial
if (objetoConsulta != null
&& !objetoConsulta.trim().equals("")
&& (objetoConsulta.trim().equals("2") || objetoConsulta.trim()
.equals("4"))) {
// Faz a consulta de Setor Comercial
this.pesquisarSetorComercial(form, objetoConsulta);
}
this.pesquisarGerenciaRegional(httpServletRequest);
this.pesquisarUnidadeNegocio(httpServletRequest, form);
this.pesquisarLigacaoAguaSituacao(httpServletRequest);
this.pesquisarCategoria(httpServletRequest);
this.pesquisarPerfisImovel(httpServletRequest);
// Seta os request�s encontrados
this.setaRequest(httpServletRequest, form);
// manda o parametro que veio do validar enter
// para ,se preciso, desabilitar os campos posterior ao intervalo, que
// n�o
// s�o iguais.
if (httpServletRequest.getParameter("campoDesabilita") != null
&& !httpServletRequest.getParameter("campoDesabilita").equals(
"")) {
httpServletRequest.setAttribute("campoDesabilita",
httpServletRequest.getParameter("campoDesabilita"));
}
return retorno;
}
/**
* Pesquisa Localidade
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void pesquisarLocalidade(
GerarRelatorioImoveisConsumoMedioActionForm form,
String objetoConsulta) {
Object local = form.getLocalidadeInicial();
if (!objetoConsulta.trim().equals("1")) {
local = form.getLocalidadeFinal();
}
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, local));
// Recupera Localidade
Collection colecaoLocalidade = this.getFachada().pesquisar(
filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade = (Localidade) Util
.retonarObjetoDeColecao(colecaoLocalidade);
if (objetoConsulta.trim().equals("1")) {
form.setLocalidadeInicial(localidade.getId().toString());
form.setNomeLocalidadeInicial(localidade.getDescricao());
}
form.setLocalidadeFinal(localidade.getId().toString());
form.setNomeLocalidadeFinal(localidade.getDescricao());
} else {
if (objetoConsulta.trim().equals("1")) {
form.setLocalidadeInicial(null);
form.setNomeLocalidadeInicial("Localidade Inicial inexistente");
form.setLocalidadeFinal(null);
form.setNomeLocalidadeFinal(null);
} else {
form.setLocalidadeFinal(null);
form.setNomeLocalidadeFinal("Localidade Final inexistente");
}
}
}
/**
* Pesquisa Setor comercial
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void pesquisarSetorComercial(
GerarRelatorioImoveisConsumoMedioActionForm form,
String objetoConsulta) {
Object local = form.getLocalidadeInicial();
Object setor = form.getSetorComercialInicial();
if (!objetoConsulta.trim().equals("2")) {
local = form.getLocalidadeFinal();
setor = form.getSetorComercialFinal();
}
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, setor));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.LOCALIDADE, local));
// Recupera Setor Comercial
Collection colecaoSetorComercial = this.getFachada().pesquisar(
filtroSetorComercial, SetorComercial.class.getName());
if (colecaoSetorComercial != null && !colecaoSetorComercial.isEmpty()) {
SetorComercial setorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoSetorComercial);
if (objetoConsulta.trim().equals("2")) {
form.setSetorComercialInicial("" + setorComercial.getCodigo());
form
.setNomeSetorComercialInicial(setorComercial
.getDescricao());
}
form.setSetorComercialFinal("" + setorComercial.getCodigo());
form.setNomeSetorComercialFinal(setorComercial.getDescricao());
} else {
if (objetoConsulta.trim().equals("2")) {
form.setSetorComercialInicial(null);
form
.setNomeSetorComercialInicial("Setor Comercial Inicial inexistente");
form.setSetorComercialFinal(null);
form.setNomeSetorComercialFinal(null);
} else {
form.setSetorComercialFinal(null);
form
.setNomeSetorComercialFinal("Setor Comercial Final inexistente");
}
}
}
/**
* Pesquisa Gerencial Regional
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void pesquisarGerenciaRegional(HttpServletRequest httpServletRequest) {
FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
filtroGerenciaRegional.setConsultaSemLimites(true);
filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME);
filtroGerenciaRegional.adicionarParametro(new ParametroSimples(
FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoGerenciaRegional = this.getFachada().pesquisar(
filtroGerenciaRegional, GerenciaRegional.class.getName());
if (colecaoGerenciaRegional == null
|| colecaoGerenciaRegional.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Ger�ncia Regional");
} else {
httpServletRequest.setAttribute("colecaoGerenciaRegional",
colecaoGerenciaRegional);
}
}
/**
* Pesquisa Unidade Negocio
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void pesquisarUnidadeNegocio(HttpServletRequest httpServletRequest,
GerarRelatorioImoveisConsumoMedioActionForm form) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.setConsultaSemLimites(true);
filtroUnidadeNegocio.setCampoOrderBy(FiltroUnidadeNegocio.NOME);
if (form.getGerenciaRegional() != null
&& !form.getGerenciaRegional().equals(
"" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.ID_GERENCIA, form
.getGerenciaRegional()));
}
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoUnidadeNegocio = this.getFachada().pesquisar(
filtroUnidadeNegocio, UnidadeNegocio.class.getName());
if (colecaoUnidadeNegocio == null || colecaoUnidadeNegocio.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Unidade de Neg�cio");
} else {
httpServletRequest.setAttribute("colecaoUnidadeNegocio",
colecaoUnidadeNegocio);
}
}
/**
* Pesquisa Situacao Ligacao Agua
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void pesquisarLigacaoAguaSituacao(
HttpServletRequest httpServletRequest) {
FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao();
filtroLigacaoAguaSituacao.setConsultaSemLimites(true);
filtroLigacaoAguaSituacao
.setCampoOrderBy(FiltroLigacaoAguaSituacao.DESCRICAO);
filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(
FiltroLigacaoAguaSituacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoSituacaoLigacaoAgua = this.getFachada().pesquisar(
filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName());
if (colecaoSituacaoLigacaoAgua == null
|| colecaoSituacaoLigacaoAgua.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Liga�ao de �gua");
} else {
httpServletRequest.setAttribute("colecaoSituacaoLigacaoAgua",
colecaoSituacaoLigacaoAgua);
}
}
/**
* Seta os request com os id encontrados
*
* @author Bruno Barros
* @date 28/11/2007
*/
private void setaRequest(HttpServletRequest httpServletRequest,
GerarRelatorioImoveisConsumoMedioActionForm form) {
// Localidade Inicial
if (form.getLocalidadeInicial() != null
&& !form.getLocalidadeInicial().equals("")
&& form.getNomeLocalidadeInicial() != null
&& !form.getNomeLocalidadeInicial().equals("")) {
httpServletRequest.setAttribute("localidadeInicialEncontrada",
"true");
httpServletRequest
.setAttribute("localidadeFinalEncontrada", "true");
} else {
if (form.getLocalidadeFinal() != null
&& !form.getLocalidadeFinal().equals("")
&& form.getNomeLocalidadeFinal() != null
&& !form.getNomeLocalidadeFinal().equals("")) {
httpServletRequest.setAttribute("localidadeFinalEncontrada",
"true");
}
}
// Setor Comercial Inicial
if (form.getSetorComercialInicial() != null
&& !form.getSetorComercialInicial().equals("")
&& form.getNomeSetorComercialInicial() != null
&& !form.getNomeSetorComercialInicial().equals("")) {
httpServletRequest.setAttribute("setorComercialInicialEncontrado",
"true");
httpServletRequest.setAttribute("setorComercialFinalEncontrado",
"true");
} else {
if (form.getSetorComercialFinal() != null
&& !form.getSetorComercialFinal().equals("")
&& form.getNomeSetorComercialFinal() != null
&& !form.getNomeSetorComercialFinal().equals("")) {
httpServletRequest.setAttribute(
"setorComercialFinalEncontrado", "true");
}
}
}
/**
* Pesquisa Gerencial Regional
*
* @author Bruno Barros
* @date 04/12/2007
*/
private void pesquisarCategoria(HttpServletRequest httpServletRequest) {
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.setConsultaSemLimites(true);
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
filtroCategoria.adicionarParametro(new ParametroSimples(
FiltroQuadra.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoCategoria = this.getFachada().pesquisar(
filtroCategoria, Categoria.class.getName());
if (colecaoCategoria == null || colecaoCategoria.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Categoria");
} else {
httpServletRequest.setAttribute("colecaoCategoria",
colecaoCategoria);
}
}
/**
* Pesquisar Perfil do Im�vel
*
* @author Magno Gouveia
* @date 17/05/2011
*
* @param httpServletRequest
*/
private void pesquisarPerfisImovel(HttpServletRequest httpServletRequest) {
FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();
filtroImovelPerfil.setConsultaSemLimites(true);
filtroImovelPerfil.setCampoOrderBy(FiltroImovelPerfil.DESCRICAO);
filtroImovelPerfil.adicionarParametro(new ParametroSimples(
FiltroImovelPerfil.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoPerfisImovel = this.getFachada().pesquisar(
filtroImovelPerfil, ImovelPerfil.class.getName());
if (colecaoPerfisImovel == null || colecaoPerfisImovel.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Perfil do Im�vel");
} else {
httpServletRequest.setAttribute("colecaoPerfisImovel",
colecaoPerfisImovel);
}
}
}