59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import { CONSTITUTIONAL_CHANGE_TYPES } from '../config/constants.js';
|
|
|
|
const ALL_CHANGE_TYPES = Object.values(CONSTITUTIONAL_CHANGE_TYPES) as string[];
|
|
|
|
export function isRegisteredConstitutionalChangeType(value: string): boolean {
|
|
return ALL_CHANGE_TYPES.includes(value);
|
|
}
|
|
|
|
/**
|
|
* Map UI / legacy profile labels to a value that exists on `constitutional_changes.changeType` ENUM.
|
|
*/
|
|
export function normalizeToConstitutionalChangeType(raw: string | null | undefined): string | null {
|
|
const s = String(raw || '').trim();
|
|
if (!s) return null;
|
|
if (isRegisteredConstitutionalChangeType(s)) return s;
|
|
const compact = s
|
|
.toLowerCase()
|
|
.replace(/\./g, '')
|
|
.replace(/\s+/g, ' ')
|
|
.trim();
|
|
if (
|
|
(compact.includes('private') && (compact.includes('ltd') || compact.includes('limited'))) ||
|
|
compact === 'pvt ltd' ||
|
|
compact === 'pvtltd'
|
|
) {
|
|
return CONSTITUTIONAL_CHANGE_TYPES.PRIVATE_LIMITED;
|
|
}
|
|
if (compact.includes('llp')) {
|
|
return CONSTITUTIONAL_CHANGE_TYPES.LLP;
|
|
}
|
|
if (compact.includes('partnership')) {
|
|
return CONSTITUTIONAL_CHANGE_TYPES.PARTNERSHIP;
|
|
}
|
|
if (compact.includes('proprietorship') || compact === 'sole proprietorship') {
|
|
return CONSTITUTIONAL_CHANGE_TYPES.PROPRIETORSHIP;
|
|
}
|
|
const exact = ALL_CHANGE_TYPES.find((v) => v.toLowerCase() === s.toLowerCase());
|
|
return exact || null;
|
|
}
|
|
|
|
/**
|
|
* Maps `constitutional_changes.changeType` → `dealers.constitutionType` when the workflow completes.
|
|
* Returns `null` when the change type does not represent a single target legal structure (skip master update).
|
|
*/
|
|
export function mapConstitutionalChangeTypeToDealerProfile(changeType: string): string | null {
|
|
const t = String(changeType || '').trim();
|
|
if (!t) return null;
|
|
|
|
const structureTargets = [
|
|
CONSTITUTIONAL_CHANGE_TYPES.PROPRIETORSHIP,
|
|
CONSTITUTIONAL_CHANGE_TYPES.PARTNERSHIP,
|
|
CONSTITUTIONAL_CHANGE_TYPES.LLP,
|
|
CONSTITUTIONAL_CHANGE_TYPES.PRIVATE_LIMITED
|
|
];
|
|
if (structureTargets.includes(t as (typeof structureTargets)[number])) return t;
|
|
|
|
return null;
|
|
}
|