feat: Add 'atas' (minutes/records) management feature, and implement various improvements across UI, backend logic, and authentication.

This commit is contained in:
2025-12-02 16:37:48 -03:00
parent 05e7f1181d
commit 4bd9e21748
265 changed files with 29156 additions and 26460 deletions

View File

@@ -1,7 +1,7 @@
<script lang="ts">
import { useConvexClient } from 'convex-svelte';
import { api } from '@sgse-app/backend/convex/_generated/api';
import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel';
import type { Doc, Id } from '@sgse-app/backend/convex/_generated/dataModel';
import { useConvexClient } from 'convex-svelte';
type PeriodoFerias = Doc<'ferias'> & {
funcionario?: Doc<'funcionarios'> | null;
@@ -16,14 +16,14 @@
onCancelar?: () => void;
}
let { periodo, gestorId, onSucesso, onCancelar }: Props = $props();
const { periodo, gestorId, onSucesso, onCancelar }: Props = $props();
const client = useConvexClient();
let modoAjuste = $state(false);
const modoAjuste = $state(false);
let novaDataInicio = $state(periodo.dataInicio);
let novaDataFim = $state(periodo.dataFim);
let motivoReprovacao = $state('');
const motivoReprovacao = $state('');
let processando = $state(false);
let erro = $state('');
@@ -69,10 +69,12 @@
const validacao = await client.query(api.saldoFerias.validarSolicitacao, {
funcionarioId: periodo.funcionario._id,
anoReferencia: periodo.anoReferencia,
periodos: [{
dataInicio: periodo.dataInicio,
dataFim: periodo.dataFim
}]
periodos: [
{
dataInicio: periodo.dataInicio,
dataFim: periodo.dataFim
}
]
});
if (!validacao.valido) {
@@ -140,10 +142,12 @@
const validacao = await client.query(api.saldoFerias.validarSolicitacao, {
funcionarioId: periodo.funcionario._id,
anoReferencia: periodo.anoReferencia,
periodos: [{
dataInicio: novaDataInicio,
dataFim: novaDataFim
}],
periodos: [
{
dataInicio: novaDataInicio,
dataFim: novaDataFim
}
],
feriasIdExcluir: periodo._id // Excluir o período original do cálculo de saldo
});
@@ -235,15 +239,11 @@
<div class="grid grid-cols-3 gap-4 text-sm">
<div>
<span class="text-base-content/70">Início:</span>
<span class="ml-1 font-semibold"
>{formatarDataString(periodo.dataInicio)}</span
>
<span class="ml-1 font-semibold">{formatarDataString(periodo.dataInicio)}</span>
</div>
<div>
<span class="text-base-content/70">Fim:</span>
<span class="ml-1 font-semibold"
>{formatarDataString(periodo.dataFim)}</span
>
<span class="ml-1 font-semibold">{formatarDataString(periodo.dataFim)}</span>
</div>
<div>
<span class="text-base-content/70">Dias:</span>