feat: add validation for vacation request approval and adjustments

- Implemented validation checks to ensure employee and vacation period data are valid before approval.
- Enhanced error handling to provide specific feedback for invalid requests.
- Added checks for adjusted vacation periods to ensure all required dates are present.
- Improved overall user experience by ensuring only valid requests can be processed.
This commit is contained in:
2025-11-13 06:25:22 -03:00
parent ebde59c6d2
commit fd7d3729c1

View File

@@ -63,6 +63,28 @@
processando = true; processando = true;
erro = ''; erro = '';
// Validar se as datas e condições estão dentro do regime do funcionário
if (!solicitacao.funcionario?._id) {
erro = 'Funcionário não encontrado';
processando = false;
return;
}
const validacao = await client.query(api.saldoFerias.validarSolicitacao, {
funcionarioId: solicitacao.funcionario._id,
anoReferencia: solicitacao.anoReferencia,
periodos: solicitacao.periodos.map((p) => ({
dataInicio: p.dataInicio,
dataFim: p.dataFim
}))
});
if (!validacao.valido) {
erro = `Não é possível aprovar: ${validacao.erros.join('; ')}`;
processando = false;
return;
}
await client.mutation(api.ferias.aprovar, { await client.mutation(api.ferias.aprovar, {
solicitacaoId: solicitacao._id, solicitacaoId: solicitacao._id,
gestorId: gestorId gestorId: gestorId
@@ -105,6 +127,37 @@
processando = true; processando = true;
erro = ''; erro = '';
// Validar se as datas ajustadas e condições estão dentro do regime do funcionário
if (!solicitacao.funcionario?._id) {
erro = 'Funcionário não encontrado';
processando = false;
return;
}
// Validar todos os períodos ajustados
for (const periodo of periodos) {
if (!periodo.dataInicio || !periodo.dataFim) {
erro = 'Todos os períodos devem ter data de início e fim';
processando = false;
return;
}
}
const validacao = await client.query(api.saldoFerias.validarSolicitacao, {
funcionarioId: solicitacao.funcionario._id,
anoReferencia: solicitacao.anoReferencia,
periodos: periodos.map((p) => ({
dataInicio: p.dataInicio,
dataFim: p.dataFim
}))
});
if (!validacao.valido) {
erro = `Não é possível aprovar com ajuste: ${validacao.erros.join('; ')}`;
processando = false;
return;
}
await client.mutation(api.ferias.ajustarEAprovar, { await client.mutation(api.ferias.ajustarEAprovar, {
solicitacaoId: solicitacao._id, solicitacaoId: solicitacao._id,
gestorId: gestorId, gestorId: gestorId,