|
|
|
|
@@ -83,10 +83,12 @@
|
|
|
|
|
// Estados para Minhas Férias
|
|
|
|
|
let mostrarWizard = $state(false);
|
|
|
|
|
let filtroStatusFerias = $state<string>('todos');
|
|
|
|
|
let refreshKeyFerias = $state(0);
|
|
|
|
|
|
|
|
|
|
// Estados para Minhas Ausências
|
|
|
|
|
let mostrarWizardAusencia = $state(false);
|
|
|
|
|
let filtroStatusAusencias = $state<string>('todos');
|
|
|
|
|
let refreshKeyAusencias = $state(0);
|
|
|
|
|
|
|
|
|
|
// Estados para Aprovar Ausências (Gestores)
|
|
|
|
|
let solicitacaoAusenciaAprovar = $state<Id<'solicitacoesAusencias'> | null>(null);
|
|
|
|
|
@@ -181,15 +183,19 @@
|
|
|
|
|
|
|
|
|
|
const minhasSolicitacoesQuery = $derived.by(() => {
|
|
|
|
|
if (!funcionarioIdParaQueries) return { data: [] };
|
|
|
|
|
// Usar refreshKey para forçar atualização quando necessário
|
|
|
|
|
return useQuery(api.ferias.listarMinhasSolicitacoes, {
|
|
|
|
|
funcionarioId: funcionarioIdParaQueries
|
|
|
|
|
funcionarioId: funcionarioIdParaQueries,
|
|
|
|
|
_refresh: refreshKeyFerias
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const minhasAusenciasQuery = $derived.by(() => {
|
|
|
|
|
if (!funcionarioIdParaQueries) return { data: [] };
|
|
|
|
|
// Usar refreshKey para forçar atualização quando necessário
|
|
|
|
|
return useQuery(api.ausencias.listarMinhasSolicitacoes, {
|
|
|
|
|
funcionarioId: funcionarioIdParaQueries
|
|
|
|
|
funcionarioId: funcionarioIdParaQueries,
|
|
|
|
|
_refresh: refreshKeyAusencias
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -220,26 +226,28 @@
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$effect(() => {
|
|
|
|
|
if (Array.isArray(minhasSolicitacoesQuery?.data) && funcionarioIdParaQueries) {
|
|
|
|
|
minhasSolicitacoesEstaveis = minhasSolicitacoesQuery.data;
|
|
|
|
|
} else if (
|
|
|
|
|
minhasSolicitacoesQuery !== undefined &&
|
|
|
|
|
minhasSolicitacoesQuery?.data === null &&
|
|
|
|
|
!funcionarioIdParaQueries
|
|
|
|
|
) {
|
|
|
|
|
minhasSolicitacoesEstaveis = [];
|
|
|
|
|
if (minhasSolicitacoesQuery !== undefined) {
|
|
|
|
|
if (Array.isArray(minhasSolicitacoesQuery.data) && funcionarioIdParaQueries) {
|
|
|
|
|
minhasSolicitacoesEstaveis = minhasSolicitacoesQuery.data;
|
|
|
|
|
} else if (minhasSolicitacoesQuery.data === null && !funcionarioIdParaQueries) {
|
|
|
|
|
minhasSolicitacoesEstaveis = [];
|
|
|
|
|
} else if (minhasSolicitacoesQuery.data === null && funcionarioIdParaQueries) {
|
|
|
|
|
// Se a query retornou null mas temos funcionarioId, pode ser que não há dados ainda
|
|
|
|
|
// Mantemos o estado atual, não limpamos
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$effect(() => {
|
|
|
|
|
if (Array.isArray(minhasAusenciasQuery?.data) && funcionarioIdParaQueries) {
|
|
|
|
|
minhasAusenciasEstaveis = minhasAusenciasQuery.data;
|
|
|
|
|
} else if (
|
|
|
|
|
minhasAusenciasQuery !== undefined &&
|
|
|
|
|
minhasAusenciasQuery?.data === null &&
|
|
|
|
|
!funcionarioIdParaQueries
|
|
|
|
|
) {
|
|
|
|
|
minhasAusenciasEstaveis = [];
|
|
|
|
|
if (minhasAusenciasQuery !== undefined) {
|
|
|
|
|
if (Array.isArray(minhasAusenciasQuery.data) && funcionarioIdParaQueries) {
|
|
|
|
|
minhasAusenciasEstaveis = minhasAusenciasQuery.data;
|
|
|
|
|
} else if (minhasAusenciasQuery.data === null && !funcionarioIdParaQueries) {
|
|
|
|
|
minhasAusenciasEstaveis = [];
|
|
|
|
|
} else if (minhasAusenciasQuery.data === null && funcionarioIdParaQueries) {
|
|
|
|
|
// Se a query retornou null mas temos funcionarioId, pode ser que não há dados ainda
|
|
|
|
|
// Mantemos o estado atual, não limpamos
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -2821,6 +2829,8 @@
|
|
|
|
|
funcionarioId={funcionarioIdDisponivel}
|
|
|
|
|
onSucesso={() => {
|
|
|
|
|
mostrarWizard = false;
|
|
|
|
|
// Forçar atualização das queries
|
|
|
|
|
refreshKeyFerias++;
|
|
|
|
|
}}
|
|
|
|
|
onCancelar={() => (mostrarWizard = false)}
|
|
|
|
|
/>
|
|
|
|
|
@@ -2878,17 +2888,10 @@
|
|
|
|
|
<div class="flex-1 overflow-y-auto p-6">
|
|
|
|
|
<WizardSolicitacaoAusencia
|
|
|
|
|
funcionarioId={funcionarioIdDisponivel}
|
|
|
|
|
onSucesso={async () => {
|
|
|
|
|
onSucesso={() => {
|
|
|
|
|
mostrarWizardAusencia = false;
|
|
|
|
|
// As queries do Convex são reativas e devem atualizar automaticamente
|
|
|
|
|
// Mas garantimos que o componente será re-renderizado
|
|
|
|
|
// Forçar recarregamento das queries mudando temporariamente o filtro
|
|
|
|
|
const filtroAnterior = filtroStatusAusencias;
|
|
|
|
|
if (filtroAnterior !== 'todos') {
|
|
|
|
|
filtroStatusAusencias = 'todos';
|
|
|
|
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
|
|
|
}
|
|
|
|
|
filtroStatusAusencias = filtroAnterior;
|
|
|
|
|
// Forçar atualização das queries
|
|
|
|
|
refreshKeyAusencias++;
|
|
|
|
|
}}
|
|
|
|
|
onCancelar={() => (mostrarWizardAusencia = false)}
|
|
|
|
|
/>
|
|
|
|
|
|