feat: implement date parsing utility across absence management components for improved date handling and consistency

This commit is contained in:
2025-12-05 11:57:15 -03:00
parent 4a1f48300f
commit 66f995cb08
16 changed files with 2053 additions and 87 deletions

View File

@@ -7,6 +7,7 @@
import type { Id } from '@sgse-app/backend/convex/_generated/dataModel';
import { SvelteDate } from 'svelte/reactivity';
import { Check, ChevronLeft, ChevronRight, Calendar, Info, AlertTriangle, X, CheckCircle } from 'lucide-svelte';
import { parseLocalDate } from '$lib/utils/datas';
interface Props {
funcionarioId: Id<'funcionarios'>;
@@ -71,14 +72,14 @@
const hoje = new SvelteDate();
hoje.setHours(0, 0, 0, 0);
const inicio = new Date(dataInicio);
const inicio = parseLocalDate(dataInicio);
if (inicio < hoje) {
toast.error('A data de início não pode ser no passado');
return;
}
if (new Date(dataFim) < new Date(dataInicio)) {
if (parseLocalDate(dataFim) < parseLocalDate(dataInicio)) {
toast.error('A data de fim deve ser maior ou igual à data de início');
return;
}
@@ -134,7 +135,7 @@
mensagemErro.includes('solicitação aprovada ou pendente')
) {
mensagemErroModal = 'Não é possível criar esta solicitação.';
detalhesErroModal = `Já existe uma solicitação aprovada ou pendente para o período selecionado:\n\nPeríodo selecionado: ${new Date(dataInicio).toLocaleDateString('pt-BR')} até ${new Date(dataFim).toLocaleDateString('pt-BR')}\n\nPor favor, escolha um período diferente ou aguarde a resposta da solicitação existente.`;
detalhesErroModal = `Já existe uma solicitação aprovada ou pendente para o período selecionado:\n\nPeríodo selecionado: ${parseLocalDate(dataInicio).toLocaleDateString('pt-BR')} até ${parseLocalDate(dataFim).toLocaleDateString('pt-BR')}\n\nPor favor, escolha um período diferente ou aguarde a resposta da solicitação existente.`;
mostrarModalErro = true;
} else {
// Outros erros continuam usando toast
@@ -230,8 +231,8 @@
<div>
<h4 class="font-bold">Período selecionado!</h4>
<p>
De {new Date(dataInicio).toLocaleDateString('pt-BR')} até
{new Date(dataFim).toLocaleDateString('pt-BR')} ({totalDias} dias)
De {parseLocalDate(dataInicio).toLocaleDateString('pt-BR')} até
{parseLocalDate(dataFim).toLocaleDateString('pt-BR')} ({totalDias} dias)
</p>
</div>
</div>
@@ -259,13 +260,13 @@
<div>
<p class="text-base-content/70 text-sm">Data Início</p>
<p class="font-bold">
{new Date(dataInicio).toLocaleDateString('pt-BR')}
{parseLocalDate(dataInicio).toLocaleDateString('pt-BR')}
</p>
</div>
<div>
<p class="text-base-content/70 text-sm">Data Fim</p>
<p class="font-bold">
{new Date(dataFim).toLocaleDateString('pt-BR')}
{parseLocalDate(dataFim).toLocaleDateString('pt-BR')}
</p>
</div>
<div>