npu-validator-library
Version:
Uma biblioteca para validação de números CNJ
52 lines (45 loc) • 1.8 kB
text/typescript
export namespace CNJValidator {
export interface ValidationResult {
valid: boolean;
error?: string;
processo?: {
numeroCNJ: string;
numeroIdentificador: string;
digitoVerificador: string;
anoProcesso: string;
codigoJustica: string;
tribunal: string;
comarca: string;
};
}
export function validate(numeroCNJ: string): ValidationResult {
const cleanCNJ = numeroCNJ.replace(/[.\-_]/g, '');
if (cleanCNJ.length !== 20) {
return { valid: false, error: 'Erro! O número CNJ deve ter 20 caracteres após remover os caracteres inválidos.' };
}
const numeroIdentificador = cleanCNJ.substring(0, 7);
const digitoVerificador = cleanCNJ.substring(7, 9);
const anoProcesso = cleanCNJ.substring(9, 13);
const codigoJustica = cleanCNJ.substring(13, 14);
const tribunal = cleanCNJ.substring(14, 16);
const comarca = cleanCNJ.substring(16, 20);
const operacaoDV = Number(numeroIdentificador) % 97;
const operacao1 = Number(`${operacaoDV}${anoProcesso}${codigoJustica}${tribunal}`) % 97;
const operacao2 = Number(`${operacao1}${comarca}${digitoVerificador}`) % 97;
if (operacao2 !== 1) {
return { valid: false, error: 'Erro! O número CNJ informado não é válido.' };
}
return {
valid: true,
processo: {
numeroCNJ: cleanCNJ,
numeroIdentificador,
digitoVerificador,
anoProcesso,
codigoJustica,
tribunal,
comarca,
},
};
}
}