Skip to content

Commit

Permalink
Merge pull request #2454 from prefeiturasp/feature/124144-armazena-es…
Browse files Browse the repository at this point in the history
…tado-filtros-despesas

feat(124144): Armazena o estado dos filtros
  • Loading branch information
mdiori authored Dec 26, 2024
2 parents b01947a + 0d5aa63 commit e0a0cfa
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 41 deletions.
117 changes: 76 additions & 41 deletions src/componentes/escolas/Despesas/ListaDeDespesas/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {Ordenacao} from "./Ordenacao";
import {tr} from "date-fns/locale";
import {LimparArgumentosOrdenacao} from "./LimparOrdenacao";
import {FormFiltroPorEspecificacaoMaterialServico} from "../FormFiltroPorEspecificacaoMaterialServico";
import { mantemEstadoFiltrosUnidade } from "../../../../services/mantemEstadoFiltrosUnidade.service";

export const ListaDeDespesas = () => {

Expand Down Expand Up @@ -64,6 +65,20 @@ export const ListaDeDespesas = () => {
const [camposOrdenacao, setCamposOrdenacao] = useState(initOrdenacao)
const [buscaUtilizandoOrdenacao, setBuscaUtilizandoOrdenacao] = useState(false)

useEffect(() => {
setLoading(true);

const storedFiltros = mantemEstadoFiltrosUnidade.getEstadoFiltrosUnidades();
const filtrosCompletos = { ...initFiltrosAvancados, ...storedFiltros };

setFiltrosAvancados(filtrosCompletos);
set_filtro_informacoes(filtrosCompletos?.filtro_informacoes || []);
set_filtro_vinculo_atividades(filtrosCompletos?.filtro_vinculo_atividades || []);

buscaDespesasOrdenacao('NAO', filtrosCompletos);
}, []);


const handleChangeFiltroInformacoes = (value) => {
set_filtro_informacoes([...value]);
}
Expand All @@ -81,11 +96,6 @@ export const ListaDeDespesas = () => {
setLoading(false)
}, [])

useEffect(() => {
buscaDespesas()
.catch(console.error);
}, [buscaDespesas])

const buscaDespesasPaginacao = async (page) => {
setPaginacaoAtual(page)
let despesas = await getListaDespesasPaginacao(page);
Expand Down Expand Up @@ -234,52 +244,77 @@ export const ListaDeDespesas = () => {
await buscaDespesasOrdenacao(_limpar_ordenacao);
}

const buscaDespesasOrdenacao = async (_limpar_ordenacao= 'NAO') => {
setForcarPrimeiraPagina(gerarUuid)
let data_inicio = filtrosAvancados.data_inicio ? moment(new Date(filtrosAvancados.data_inicio), "YYYY-MM-DD").format("YYYY-MM-DD") : null;
let data_fim = filtrosAvancados.data_fim ? moment(new Date(filtrosAvancados.data_fim), "YYYY-MM-DD").format("YYYY-MM-DD") : null;

let lista_retorno_api

if (_limpar_ordenacao === 'SIM'){
const buscaDespesasOrdenacao = async (_limpar_ordenacao = 'NAO', filtros = initFiltrosAvancados) => {
setForcarPrimeiraPagina(gerarUuid);
const filtrosAtuais = {
filtrar_por_termo: filtros?.filtrar_por_termo?.trim() !== "" ? filtros?.filtrar_por_termo : filtrosAvancados.filtrar_por_termo || "",
aplicacao_recurso: filtros?.aplicacao_recurso?.trim() !== "" ? filtros?.aplicacao_recurso : filtrosAvancados.aplicacao_recurso || "",
acao_associacao: filtros?.acao_associacao?.trim() !== "" ? filtros?.acao_associacao : filtrosAvancados.acao_associacao || "",
despesa_status: filtros?.despesa_status?.trim() !== "" ? filtros?.despesa_status : filtrosAvancados.despesa_status || "",
fornecedor: filtros?.fornecedor?.trim() !== "" ? filtros?.fornecedor : filtrosAvancados.fornecedor || "",
data_inicio: filtros?.data_inicio?.trim() !== "" ? filtros?.data_inicio : (filtrosAvancados.data_inicio ? moment(new Date(filtrosAvancados.data_inicio)).format("YYYY-MM-DD") : ""),
data_fim: filtros?.data_fim?.trim() !== "" ? filtros?.data_fim : (filtrosAvancados.data_fim ? moment(new Date(filtrosAvancados.data_fim)).format("YYYY-MM-DD") : ""),
conta_associacao: filtros?.conta_associacao?.trim() !== "" ? filtros?.conta_associacao : filtrosAvancados.conta_associacao || "",
filtro_vinculo_atividades: filtros?.filtro_vinculo_atividades?.length ? filtros?.filtro_vinculo_atividades : filtro_vinculo_atividades || [],
filtro_informacoes: filtros?.filtro_informacoes?.length ? filtros?.filtro_informacoes : filtro_informacoes || [],
};

let lista_retorno_api;
if (_limpar_ordenacao === 'SIM') {
lista_retorno_api = await ordenacaoDespesas(
filtrosAvancados.filtrar_por_termo,
filtrosAvancados.aplicacao_recurso,
filtrosAvancados.acao_associacao,
filtrosAvancados.despesa_status,
filtrosAvancados.fornecedor,
data_inicio,
data_fim,
filtrosAvancados.conta_associacao,
filtro_vinculo_atividades,
filtro_informacoes,
filtrosAtuais.filtrar_por_termo,
filtrosAtuais.aplicacao_recurso,
filtrosAtuais.acao_associacao,
filtrosAtuais.despesa_status,
filtrosAtuais.fornecedor,
filtrosAtuais.data_inicio,
filtrosAtuais.data_fim,
filtrosAtuais.conta_associacao,
filtrosAtuais.filtro_vinculo_atividades,
filtrosAtuais.filtro_informacoes
);
}else {
} else {
lista_retorno_api = await ordenacaoDespesas(
filtrosAvancados.filtrar_por_termo,
filtrosAvancados.aplicacao_recurso,
filtrosAvancados.acao_associacao,
filtrosAvancados.despesa_status,
filtrosAvancados.fornecedor,
data_inicio,
data_fim,
filtrosAvancados.conta_associacao,
filtro_vinculo_atividades,
filtro_informacoes,
filtrosAtuais.filtrar_por_termo,
filtrosAtuais.aplicacao_recurso,
filtrosAtuais.acao_associacao,
filtrosAtuais.despesa_status,
filtrosAtuais.fornecedor,
filtrosAtuais.data_inicio,
filtrosAtuais.data_fim,
filtrosAtuais.conta_associacao,
filtrosAtuais.filtro_vinculo_atividades,
filtrosAtuais.filtro_informacoes,
camposOrdenacao.ordenar_por_numero_do_documento,
camposOrdenacao.ordenar_por_data_especificacao,
camposOrdenacao.ordenar_por_valor,
camposOrdenacao.ordenar_por_imposto,
camposOrdenacao.ordenar_por_imposto
);
}

reusltadoSomaDosTotais(
filtrosAtuais.filtrar_por_termo,
filtrosAtuais.aplicacao_recurso,
filtrosAtuais.acao_associacao,
filtrosAtuais.despesa_status,
filtrosAtuais.fornecedor,
filtrosAtuais.data_inicio,
filtrosAtuais.data_fim,
filtrosAtuais.conta_associacao,
filtrosAtuais.vinculo_atividade,
filtrosAtuais.filtro_informacoes
);

mantemEstadoFiltrosUnidade.setEstadoFiltrosUnidadesUsuario(visoesService.getUsuarioLogin(), {
filtros_despesas: filtrosAtuais,
});

let results = lista_retorno_api.results
setDespesas(results)
let numeroDePaginas = lista_retorno_api.count;
setTotalDePaginas(Math.ceil((numeroDePaginas) / divisorPaginas))
setLoading(false)
}
const results = lista_retorno_api.results;
setDespesas(results);
setTotalDePaginas(Math.ceil(lista_retorno_api.count / divisorPaginas));
setLoading(false);
};


const buscaDespesasOrdenacaoPaginacao = async (page) => {
setPaginacaoAtual(page)
Expand Down
63 changes: 63 additions & 0 deletions src/services/mantemEstadoFiltrosUnidade.service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import {visoesService} from "./visoes.service";

export const ESTADO_FILTROS_UNIDADES = "ESTADO_FILTROS_UNIDADES";

const limpaEstadoFiltrosUnidadesUsuarioLogado = (usuario) =>{
let estado_filtros_unidades = getEstadoFiltrosUnidades()
let estado_filtros_unidades_update = {
...estado_filtros_unidades,
[`usuario_${usuario}`]: {
unidade_uuid: '',
filtros_despesas: {
filtrar_por_termo: '',
aplicacao_recurso: '',
acao_associacao: '',
filtro_informacoes: [],
conta_associacao: '',
despesa_status: '',
filtro_vinculo_atividades: [],
fornecedor: '',
data_inicio: '',
data_fim: '',
},
}
};
localStorage.setItem(ESTADO_FILTROS_UNIDADES, JSON.stringify(estado_filtros_unidades_update));
}

const setEstadoFiltrosUnidadesUsuario = (usuario, objeto) => {
const todos_estados_unidades = getTodosEstadosFiltrosUnidades();

let estados_atualizados = {
...todos_estados_unidades,
[`usuario_${usuario}`]: {
...todos_estados_unidades[`usuario_${usuario}`],
filtros_despesas: {
...todos_estados_unidades[`usuario_${usuario}`]?.filtros_despesas,
...objeto.filtros_despesas,
},
},
};

localStorage.setItem(ESTADO_FILTROS_UNIDADES, JSON.stringify(estados_atualizados));
};


const getTodosEstadosFiltrosUnidades = () => {
return localStorage.getItem(ESTADO_FILTROS_UNIDADES)
? JSON.parse(localStorage.getItem(ESTADO_FILTROS_UNIDADES))
: {};
};

const getEstadoFiltrosUnidades = () => {
const usuario = visoesService.getUsuarioLogin();
const todos_estados = getTodosEstadosFiltrosUnidades();
return todos_estados[`usuario_${usuario}`]?.filtros_despesas || {};
};

export const mantemEstadoFiltrosUnidade = {
limpaEstadoFiltrosUnidadesUsuarioLogado,
setEstadoFiltrosUnidadesUsuario,
getEstadoFiltrosUnidades,
getTodosEstadosFiltrosUnidades,
};

0 comments on commit e0a0cfa

Please sign in to comment.