package gcom.gui.arrecadacao;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao;
import gcom.arrecadacao.FiltroConsultarDadosDiariosArrecadacao.GROUP_BY;
import gcom.batch.FiltroFuncionalidadeIniciada;
import gcom.batch.FuncionalidadeIniciada;
import gcom.batch.FuncionalidadeSituacao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.StatusWizard;
import gcom.seguranca.acesso.Funcionalidade;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ConectorOr;
import gcom.util.filtro.ParametroSimples;
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;
public class FiltrarDadosDiariosArrecadacaoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = null;
Fachada fachada = Fachada.getInstancia();
/** filtro para verificar se a funcionalidade de gerar dados di�rios de arrecada��o esta executando */
FiltroFuncionalidadeIniciada filtroFuncionalidadeIniciada = new FiltroFuncionalidadeIniciada();
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_ID,Funcionalidade.GERAR_DADOS_DIARIOS_ARRECADACAO));
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_SITUACAO,FuncionalidadeSituacao.EM_ESPERA, ConectorOr.CONECTOR_OR, 2));
filtroFuncionalidadeIniciada.adicionarParametro(new ParametroSimples(FiltroFuncionalidadeIniciada.FUNCIONALIDADE_SITUACAO,FuncionalidadeSituacao.EM_PROCESSAMENTO));
Collection<FuncionalidadeIniciada> colecaoFuncionalidadeEmProcessamento = fachada.pesquisar(filtroFuncionalidadeIniciada,FuncionalidadeIniciada.class.getName());
/*
* Caso a funcionalidade esteja emprocessamento ou em espera
* envia uma mensagem ao usu�rio negando o acesso a consulta.
*/
if(colecaoFuncionalidadeEmProcessamento != null && !colecaoFuncionalidadeEmProcessamento.isEmpty()){
throw new ActionServletException("atencao.funcionalidade.processando");
}
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Pega o formul�rio
FiltrarDadosDiariosArrecadacaoActionForm filtrarDadosDiariosArrecadacaoActionForm = (FiltrarDadosDiariosArrecadacaoActionForm) actionForm;
// Recupera os par�metros do form
String periodoArrecadacaoInicial = filtrarDadosDiariosArrecadacaoActionForm.getPeriodoArrecadacaoInicio();
String periodoArrecadacaoFinal = filtrarDadosDiariosArrecadacaoActionForm.getPeriodoArrecadacaoFim();
String localidade = filtrarDadosDiariosArrecadacaoActionForm.getLocalidade();
String idArrecadador = filtrarDadosDiariosArrecadacaoActionForm.getIdArrecadador();
String idGerenciaRegional = filtrarDadosDiariosArrecadacaoActionForm.getIdGerenciaRegional();
String idElo = filtrarDadosDiariosArrecadacaoActionForm.getIdElo();
String[] idsImovelPerfil = filtrarDadosDiariosArrecadacaoActionForm.getImovelPerfil();
String[] idsLigacaoAgua = filtrarDadosDiariosArrecadacaoActionForm.getLigacaoAgua();
String[] idsLigacaoEsgoto = filtrarDadosDiariosArrecadacaoActionForm.getLigacaoEsgoto();
String[] idsCategoria = filtrarDadosDiariosArrecadacaoActionForm.getCategoria();
String[] idsEsferaPoder = filtrarDadosDiariosArrecadacaoActionForm.getEsferaPoder();
String[] idsDocumentosTipos = filtrarDadosDiariosArrecadacaoActionForm.getDocumentoTipo();
retorno = actionMapping.findForward("consultarDadosDiariosParametros");
// Monta o Status do Wizard
StatusWizard statusWizard = new StatusWizard(
"consultarDadosDiariosArrecadacaoWizardAction", "exibirFiltrarDadosDiariosArrecadacaoAction",
"cancelarConsultarDadosDiariosArrecadacaoAction",
"exibirFiltrarDadosDiariosArrecadacaoAction",
"filtrarDadosDiariosArrecadacaoAction.do");
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
1, "ParametrosPrimeiraAbaA.gif", "ParametrosPrimeiraAbaD.gif",
"exibirConsultarDadosDiariosParametrosAction",
""));
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
2, "GerenciaIntervaloAbaA.gif", "GerenciaIntervaloAbaD.gif",
"exibirConsultarDadosDiariosGerenciaAction",
""));
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
3, "ArrecadadorIntervaloAbaA.gif", "ArrecadadorIntervaloAbaD.gif",
"exibirConsultarDadosDiariosArrecadadorAction",
""));
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
4, "CategoriaIntervaloAbaA.gif", "CategoriaIntervaloAbaD.gif",
"exibirConsultarDadosDiariosCategoriaAction",
""));
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
5, "PerfilIntervaloAbaA.gif", "PerfilIntervaloAbaD.gif",
"exibirConsultarDadosDiariosPerfilAction",
""));
statusWizard
.inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem(
6, "DocumentoUltimaAbaA.gif", "DocumentoUltimaAbaD.gif",
"exibirConsultarDadosDiariosDocumentoAction",
""));
// colecaoArrecadacaoDadosDiarios = fachada.filtrarDadosDiariosArrecadacao(Util
// .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoInicial),
// Util
// .formatarMesAnoParaAnoMesSemBarra(periodoArrecadacaoFinal),
// localidade,
// idGerenciaRegional,
// idArrecadador,
// idElo,
// idsImovelPerfil,
// idsLigacaoAgua,
// idsLigacaoEsgoto,
// idsDocumentosTipos,
// idsCategoria,
// idsEsferaPoder);
boolean peloMenosUmParametroInformado = false;
// Per�odo Arrecada��o
if (periodoArrecadacaoInicial != null
&& !periodoArrecadacaoInicial.equals("")) {
peloMenosUmParametroInformado = true;
}
// Localidade
if (localidade != null
&& !localidade.equals("") && !localidade
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
}
else{
filtrarDadosDiariosArrecadacaoActionForm.setLocalidade("");
filtrarDadosDiariosArrecadacaoActionForm.setDescricaoLocalidade("");
}
// Gerencia Regional
if (idGerenciaRegional != null
&& !idGerenciaRegional.equals("") && (!(idGerenciaRegional
.equals(new Integer(ConstantesSistema.NUMERO_NAO_INFORMADO).toString())))
) {
peloMenosUmParametroInformado = true;
}
else{
filtrarDadosDiariosArrecadacaoActionForm.setIdGerenciaRegional("");
filtrarDadosDiariosArrecadacaoActionForm.setNomeGerenciaRegional("");
}
// Arrecadador
if (idArrecadador != null
&& !idArrecadador.equals("") && !idArrecadador
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
}
else{
filtrarDadosDiariosArrecadacaoActionForm.setIdArrecadador("");
filtrarDadosDiariosArrecadacaoActionForm.setNomeArrecadador("");
}
// Elo
if (idElo != null
&& !idElo.equals("") && !idElo
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)) {
peloMenosUmParametroInformado = true;
}
else{
filtrarDadosDiariosArrecadacaoActionForm.setIdElo("");
filtrarDadosDiariosArrecadacaoActionForm.setNomeElo("");
}
// Imovel Perfil
int i = 0;
if (idsImovelPerfil != null) {
while (i < idsImovelPerfil.length) {
if (!idsImovelPerfil[i].equals("")) {
peloMenosUmParametroInformado = true;
}
i++;
}
}
// Situa��o Liga��o �gua
i = 0;
if (idsLigacaoAgua != null) {
while (i < idsLigacaoAgua.length) {
if (!idsLigacaoAgua[i].equals("")) {
peloMenosUmParametroInformado = true;
}
i++;
}
}
// Situa��o Liga��o Esgoto
i = 0;
if (idsLigacaoEsgoto != null) {
while (i < idsLigacaoEsgoto.length) {
if (!idsLigacaoEsgoto[i].equals("")) {
peloMenosUmParametroInformado = true;
}
i++;
}
}
// Tipo do Documento
i = 0;
if (idsDocumentosTipos != null) {
while (i < idsDocumentosTipos.length) {
if (!idsDocumentosTipos[i].equals("")) {
// peloMenosUmParametroInformado = true;
}
i++;
}
}
// Categoria
i = 0;
if (idsCategoria != null) {
while (i < idsCategoria.length) {
if (!idsCategoria[i].equals("")) {
// peloMenosUmParametroInformado = true;
}
i++;
}
}
// Esfera Poder
i = 0;
if (idsEsferaPoder != null) {
while (i < idsEsferaPoder.length) {
if (!idsEsferaPoder[i].equals("")) {
// peloMenosUmParametroInformado = true;
}
i++;
}
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
FiltroConsultarDadosDiariosArrecadacao filtro = new FiltroConsultarDadosDiariosArrecadacao();
filtro.setAgrupamento(GROUP_BY.ANO_MES);
filtro.setIdArrecadador(idArrecadador);
filtro.setIdElo(idElo);
filtro.setIdGerenciaRegional(idGerenciaRegional);
filtro.setIdLocalidade(localidade);
filtro.setIdsCategoria(idsCategoria);
filtro.setIdsDocumentoTipoAgregador(idsDocumentosTipos);
filtro.setIdsEsferaPoder(idsEsferaPoder);
filtro.setIdsImovelPerfil(idsImovelPerfil);
filtro.setIdsSituacaoLigacaoAgua(idsLigacaoAgua);
filtro.setIdsSituacaoLigacaoEsgoto(idsLigacaoEsgoto);
boolean existeDados =
fachada.verificarExistenciaDadosDiariosArrecadacao(
Util.formatarMesAnoComBarraParaAnoMes(periodoArrecadacaoInicial),
Util.formatarMesAnoComBarraParaAnoMes(periodoArrecadacaoFinal),
filtro);
// [FS0009] Verifica a exist�ncia de Dados diarios de arrecadacao
if (!existeDados) {
// Nenhum dados diarios de arrecadacao cadastrado
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
sessao.setAttribute("filtroConsultarDadosDiariosArrecadacao", filtro);
sessao.setAttribute("periodoArrecadacaoInicial",
Util.formatarMesAnoComBarraParaAnoMes(periodoArrecadacaoInicial));
sessao.setAttribute("periodoArrecadacaoFinal",
Util.formatarMesAnoComBarraParaAnoMes(periodoArrecadacaoFinal));
// sessao.setAttribute("colecaoArrecadacaoDadosDiarios",
// colecaoArrecadacaoDadosDiarios);
//manda o statusWizard para a sess�o
sessao.setAttribute("statusWizard", statusWizard);
// Devolve o mapeamento de retorno
return retorno;
}
}