49 lines
2.5 KiB
TypeScript
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;
|
|
}
|