cnj-validate
Version:
Biblioteca TypeScript para validação e análise de números de processos em conformidade com o CNJ (Conselho Nacional de Justiça) do Brasil
160 lines • 5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOriginCourt = getOriginCourt;
exports.getMaxCourtBySegment = getMaxCourtBySegment;
const court_1 = require("../types/court");
const district_1 = require("../types/district");
const errors_1 = require("../types/errors");
/**
* Analisa e retorna informações sobre tribunal de origem
* @param court Código do tribunal (2 dígitos)
* @param segment Informações do segmento
* @returns Informações do tribunal de origem
*/
function getOriginCourt(court, segment) {
switch (court) {
case court_1.SpecialCourtCode.ORIGINAL:
return parseCourt00(segment);
case court_1.SpecialCourtCode.COUNCIL:
return parseCourt90(segment);
default:
return parseCourtOther(segment, court);
}
}
/**
* Processa tribunal código 00 (processo originário)
*/
function parseCourt00(segment) {
let originCourt;
switch (segment.number) {
case 1:
case 2:
case 3:
originCourt = `${segment.name} (${segment.short})`;
break;
case 5:
originCourt = 'Tribunal Superior do Trabalho (TST)';
break;
case 6:
originCourt = 'Tribunal Superior Eleitoral (TSE)';
break;
case 7:
case 9:
originCourt = 'Superior Tribunal Militar (STM)';
break;
default:
throw errors_1.CNJValidationError.invalidCourt('00', segment.number);
}
return {
originCourtType: court_1.CourtType.ORIGINAL_LAWSUIT,
originCourtNumber: originCourt,
};
}
/**
* Processa tribunal código 90 (conselhos especiais)
*/
function parseCourt90(segment) {
let originCourt;
switch (segment.number) {
case 4:
originCourt = 'Conselho da Justiça Federal';
break;
case 5:
originCourt = 'Conselho Superior da Justiça do Trabalho';
break;
default:
throw errors_1.CNJValidationError.invalidCourt('90', segment.number);
}
return {
originCourtType: court_1.CourtType.ORIGINAL_LAWSUIT,
originCourtNumber: originCourt,
};
}
/**
* Processa outros códigos de tribunal
*/
function parseCourtOther(segment, court) {
const courtNumber = parseInt(court, 10);
if (isNaN(courtNumber)) {
throw errors_1.CNJValidationError.invalidCourt(court, segment.number);
}
// Validação específica para tribunais militares estaduais
if (segment.number === 9) {
return parseMilitaryCourt(courtNumber);
}
// Validação de limites por segmento
if (!isCourtValid(segment, courtNumber)) {
throw errors_1.CNJValidationError.invalidCourt(court, segment.number);
}
const { courtType, courtNumber: courtNum } = getCourtTypeAndNumber(segment, courtNumber);
return {
originCourtType: courtType,
originCourtNumber: courtNum,
};
}
/**
* Processa tribunais militares estaduais
*/
function parseMilitaryCourt(courtCode) {
let courtName;
switch (courtCode) {
case district_1.MilitaryCourtCodes.MG:
courtName = 'Minas Gerais - MG';
break;
case district_1.MilitaryCourtCodes.RS:
courtName = 'Rio Grande do Sul - RS';
break;
case district_1.MilitaryCourtCodes.SP:
courtName = 'São Paulo - SP';
break;
default:
throw errors_1.CNJValidationError.invalidCourt(courtCode.toString(), 9);
}
return {
originCourtType: court_1.CourtType.MARTIAL_COURT,
originCourtNumber: courtName,
};
}
/**
* Determina tipo e número do tribunal baseado no segmento
*/
function getCourtTypeAndNumber(segment, courtNumber) {
switch (segment.number) {
case 4:
case 5:
return {
courtType: court_1.CourtType.REGION,
courtNumber: courtNumber.toString(),
};
case 6:
case 8:
return {
courtType: court_1.CourtType.ESTATE,
courtNumber: courtNumber.toString(),
};
case 7:
return {
courtType: court_1.CourtType.JUDICIAL_CIRCUIT,
courtNumber: courtNumber.toString(),
};
default:
throw errors_1.CNJValidationError.invalidCourt(courtNumber.toString(), segment.number);
}
}
/**
* Valida se o número do tribunal é válido para o segmento
*/
function isCourtValid(segment, courtNumber) {
const maxCourt = court_1.MAX_COURT_BY_SEGMENT[segment.number];
if (maxCourt === 0) {
return true; // Sem limite
}
return courtNumber >= 1 && courtNumber <= maxCourt;
}
/**
* Obtém limite máximo de tribunal para um segmento
*/
function getMaxCourtBySegment(segmentNumber) {
return court_1.MAX_COURT_BY_SEGMENT[segmentNumber] || 0;
}
//# sourceMappingURL=court-analyzer.js.map