export type ValidationErrors = Record; function required(value: unknown) { return String(value ?? "").trim().length > 0; } export function validateSolicitacaoPayload(payload: Record): 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; }