sgmp/frontend/lib/validation/solicitacao.ts

49 lines
2.5 KiB
TypeScript

export type ValidationErrors = Record<string, string>;
function required(value: unknown) {
return String(value ?? "").trim().length > 0;
}
export function validateSolicitacaoPayload(payload: Record<string, unknown>): ValidationErrors {
const errors: ValidationErrors = {};
const tipo = String(payload.tipo || "");
if (!required(tipo)) errors.tipo = "Selecione o tipo de solicitação.";
if (tipo !== "ADM_AUMENTO" && !required(payload.funcionario_id)) {
errors.funcionario_id = "Selecione o colaborador.";
}
if (tipo === "DESLIGAMENTO") {
if (!required(payload.tipo_desligamento)) errors.tipo_desligamento = "Informe o tipo de desligamento.";
if (!required(payload.aviso_previo)) errors.aviso_previo = "Informe o aviso prévio.";
if (!required(payload.data_prevista_desligamento)) errors.data_prevista_desligamento = "Informe a data prevista.";
if (!required(payload.motivo)) errors.motivo = "Informe a justificativa.";
}
if (tipo === "MOVIMENTACAO") {
if (!required(payload.data_efetivacao)) errors.data_efetivacao = "Informe a data de efetivação.";
if (!required(payload.justificativa)) errors.justificativa = "Informe a justificativa.";
}
if (tipo === "ADM_SUBSTITUICAO") {
if (!required(payload.data_previsao_contratacao)) errors.data_previsao_contratacao = "Informe a data prevista.";
if (!required(payload.cod_coligada_destino)) errors.cod_coligada_destino = "Informe a coligada.";
if (!required(payload.cod_filial_destino)) errors.cod_filial_destino = "Informe a filial.";
if (!required(payload.cod_secao_destino)) errors.cod_secao_destino = "Informe a seção.";
if (!required(payload.cod_funcao_destino)) errors.cod_funcao_destino = "Informe a função.";
if (!required(payload.justificativa)) errors.justificativa = "Informe a justificativa.";
}
if (tipo === "ADM_AUMENTO") {
if (!required(payload.data_previsao_contratacao)) errors.data_previsao_contratacao = "Informe a data prevista.";
if (!required(payload.cod_coligada_destino)) errors.cod_coligada_destino = "Informe a coligada.";
if (!required(payload.cod_filial_destino)) errors.cod_filial_destino = "Informe a filial.";
if (!required(payload.cod_secao_destino)) errors.cod_secao_destino = "Informe a seção.";
if (!required(payload.cod_funcao_destino)) errors.cod_funcao_destino = "Informe a função.";
if (!required(payload.justificativa_estrategica)) errors.justificativa_estrategica = "Informe a justificativa.";
}
return errors;
}