From e548c2c678f5010484a74a26066a8ede83cf0ff0 Mon Sep 17 00:00:00 2001 From: deyvisonwanderley Date: Tue, 23 Dec 2025 23:06:35 -0300 Subject: [PATCH] feat: streamline date validation in dispensa functionality by comparing date strings directly, avoiding timezone issues, and enhance date formatting for improved user readability --- .../controle-ponto/dispensa/+page.svelte | 12 +++++++----- packages/backend/convex/pontos.ts | 8 +++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte index 78941a9..0286283 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte @@ -100,10 +100,9 @@ return; } - const dataInicioObj = new Date(dataInicio); - const dataFimObj = new Date(dataFim); - - if (dataFimObj < dataInicioObj) { + // Validar datas (comparar strings diretamente para evitar problemas de timezone) + // Formato YYYY-MM-DD permite comparação lexicográfica + if (dataFim < dataInicio) { toast.error('Data fim deve ser maior ou igual à data início'); return; } @@ -163,7 +162,10 @@ } function formatarDataHora(data: string, hora: number, minuto: number): string { - return `${new Date(data).toLocaleDateString('pt-BR')} ${hora.toString().padStart(2, '0')}:${minuto.toString().padStart(2, '0')}`; + // Converter YYYY-MM-DD para DD/MM/YYYY sem problemas de timezone + const [ano, mes, dia] = data.split('-'); + const dataFormatada = `${dia}/${mes}/${ano}`; + return `${dataFormatada} ${hora.toString().padStart(2, '0')}:${minuto.toString().padStart(2, '0')}`; } diff --git a/packages/backend/convex/pontos.ts b/packages/backend/convex/pontos.ts index 6fe3951..b23f8b1 100644 --- a/packages/backend/convex/pontos.ts +++ b/packages/backend/convex/pontos.ts @@ -2978,11 +2978,9 @@ export const criarDispensaRegistro = mutation({ throw new Error('Você não tem permissão para criar dispensa para este funcionário'); } - // Validar datas - const dataInicioObj = new Date(args.dataInicio); - const dataFimObj = new Date(args.dataFim); - - if (dataFimObj < dataInicioObj) { + // Validar datas (comparar strings diretamente para evitar problemas de timezone) + // Formato YYYY-MM-DD permite comparação lexicográfica + if (args.dataFim < args.dataInicio) { throw new Error('Data fim deve ser maior ou igual à data início'); }