funcaoBuscarDadosDeCadaFiltro method

Future<void> funcaoBuscarDadosDeCadaFiltro({
  1. required FiltrosWidgetModel valor,
  2. required bool isBuscarDropDown,
  3. required int index,
  4. bool pesquisa = false,
  5. bool isDataMensal = false,
})

Implementation

Future<void> funcaoBuscarDadosDeCadaFiltro({
  required FiltrosWidgetModel valor,
  required bool isBuscarDropDown,
  required int index,
  bool pesquisa = false,
  bool isDataMensal = false,
}) async {
  erroBuscarItensFiltro = false;
  if (isBuscarDropDown == false) validarListaParaDropDown = isBuscarDropDown;

  try {
    validarListaParaDropDown = isBuscarDropDown;

    loadingItensFiltros = true;
    novoIndexFiltro = retornarIndexListaFiltrosCarregados(index: index,);

    if (novoIndexFiltro == -1 || (!listaFiltrosCarregados[novoIndexFiltro].pesquisaFeita && !pesquisa)) {
      try {
        if(isDataMensal){
          String mesinit = "";
          mapaFiltrosWidget.forEach((key, value) {
            if(value["tipo"] == "datapickermensal"){
              mesinit = value["mesInicial"];
            }
          });

          if (novoIndexFiltro == -1 || listaFiltrosCarregados[novoIndexFiltro].pesquisaFeita) {
            listaFiltrosCarregados.add(
              FiltrosCarrregados(
                tipoFiltro: listaFiltrosParaConstruirTela[index].filtrosWidgetModel.tipoFiltro,
                indexFiltros: index,
                indexPagina: indexPagina,
                tipoWidget: listaFiltrosParaConstruirTela[index].filtrosWidgetModel.tipoWidget,
                listaFiltros: getDataMensal(mesInicial: mesinit),
              ),
            );
          } else {
            listaFiltrosCarregados[novoIndexFiltro].listaFiltros = getDataMensal(mesInicial: mesinit);
          }
        }else{
          bodyPesquisarFiltros.addAll(
            {
              "function": valor.funcaoPrincipal,
              "database": valor.bancoBuscarFiltros,
              "matricula": SettingsReports.matricula,
            },
          );

          String response = await API().getDataReportApiJWT(dados: bodyPesquisarFiltros, url: "filtros/${valor.arquivoQuery}");

          List dados = jsonDecode(response);
          if (novoIndexFiltro == -1 || listaFiltrosCarregados[novoIndexFiltro].pesquisaFeita) {
            listaFiltrosCarregados.add(
              FiltrosCarrregados(
                tipoFiltro: listaFiltrosParaConstruirTela[index].filtrosWidgetModel.tipoFiltro,
                indexFiltros: index,
                indexPagina: indexPagina,
                tipoWidget: listaFiltrosParaConstruirTela[index].filtrosWidgetModel.tipoWidget,
                listaFiltros: dados.map((e) => FiltrosModel.fromJson(e)).toList(),
              ),
            );
          } else {
            listaFiltrosCarregados[novoIndexFiltro].listaFiltros = dados.map((e) => FiltrosModel.fromJson(e)).toList();
          }
        }
        indexFiltro = index;
        novoIndexFiltro = retornarIndexListaFiltrosCarregados();
      } catch (e) {
        erroBuscarItensFiltro = true;
      } finally {
        listaFiltrosCarregados[novoIndexFiltro].pesquisaFeita = true;
      }
    } else if (pesquisa) {
      try {
        bodyPesquisarFiltros.addAll({
          "function": valor.funcaoPrincipal,
          "database": valor.bancoBuscarFiltros,
          "matricula": SettingsReports.matricula,
        });

        String response = await API().getDataReportApiJWT(dados: bodyPesquisarFiltros, url: "filtros/${valor.arquivoQuery}");

        bodyPesquisarFiltros.remove('pesquisa');
        List dados = jsonDecode(response);

        listaFiltrosCarregados[novoIndexFiltro].listaFiltros = dados.map((e) => FiltrosModel.fromJson(e)).toList();
      } catch (e) {
        erroBuscarItensFiltro = true;
        listaFiltrosCarregados[novoIndexFiltro].listaFiltros = [];
      } finally {
        listaFiltrosCarregados[novoIndexFiltro].pesquisaFeita = false;
      }
    }
    indexFiltro = index;
    for (FiltrosModel itens in getListFiltrosComputed) {
      if (listaFiltrosParaConstruirTela[indexFiltro].qualPaginaFiltroPertence == indexPagina) {
        for (FiltrosModel itensSelecionados in listaFiltrosParaConstruirTela[indexFiltro].filtrosWidgetModel.itensSelecionados!) {
          if (itens.codigo == itensSelecionados.codigo) {
            itens = itensSelecionados;
            getListFiltrosComputed[listaFiltrosCarregados[novoIndexFiltro].listaFiltros.indexOf(itens)] = itens;
          }
        }
      }
    }
  } finally {
    loadingItensFiltros = false;
    if (isBuscarDropDown) validarListaParaDropDown = isBuscarDropDown;
  }
}