forked from Yara724/api
updated the fucking mf fanavaran
This commit is contained in:
@@ -243,6 +243,12 @@ export function pickFanavaranVehicleFromInquiry(
|
||||
const match = inquired.find((row) => pickVehicleId(row) === vehicleId);
|
||||
if (match) return asObjectRecord(match);
|
||||
}
|
||||
const withPlaqueKind = inquired.find(
|
||||
(row) =>
|
||||
parseFanavaranId(asObjectRecord(row)?.PlaqueKindId) != null ||
|
||||
parseFanavaranId(asObjectRecord(row)?.plaqueKindId) != null,
|
||||
);
|
||||
if (withPlaqueKind) return asObjectRecord(withPlaqueKind);
|
||||
return asObjectRecord(inquired[0]);
|
||||
}
|
||||
return asObjectRecord(inquired);
|
||||
@@ -251,15 +257,51 @@ export function pickFanavaranVehicleFromInquiry(
|
||||
export function pickVinFromPartyVehicle(party: {
|
||||
vehicle?: { vin?: unknown; inquiry?: unknown };
|
||||
} | null | undefined): string | null {
|
||||
const direct = normalizeVin(party?.vehicle?.vin);
|
||||
if (direct) return direct;
|
||||
return collectPartyVinCandidates(party)[0] ?? null;
|
||||
}
|
||||
|
||||
const inquiry = party?.vehicle?.inquiry;
|
||||
const nested = asObjectRecord(inquiry);
|
||||
const mapped = pickVehicleVin(asObjectRecord(nested?.mapped));
|
||||
if (mapped) return mapped;
|
||||
const raw = pickVehicleVin(asObjectRecord(nested?.raw ?? inquiry));
|
||||
return raw || null;
|
||||
/**
|
||||
* VIN first (mapped/raw VIN fields), then party.vehicle.vin, then chassis.
|
||||
* Damaged cars often store chassis on `vehicle.vin` which must not win over the real VIN.
|
||||
*/
|
||||
export function collectPartyVinCandidates(party: {
|
||||
vehicle?: { vin?: unknown; inquiry?: unknown };
|
||||
} | null | undefined): string[] {
|
||||
const inquiry = asObjectRecord(party?.vehicle?.inquiry);
|
||||
const mapped = asObjectRecord(inquiry?.mapped);
|
||||
const rawData = asObjectRecord(
|
||||
asObjectRecord(inquiry?.raw)?.data ?? inquiry?.raw ?? inquiry,
|
||||
);
|
||||
const values = [
|
||||
mapped?.VIN,
|
||||
mapped?.Vin,
|
||||
mapped?.vin,
|
||||
mapped?.VinNumberField,
|
||||
rawData?.VIN,
|
||||
rawData?.Vin,
|
||||
rawData?.vin,
|
||||
rawData?.VinNumberField,
|
||||
party?.vehicle?.vin,
|
||||
mapped?.ChassisNo,
|
||||
mapped?.chassisNo,
|
||||
mapped?.ShsNum,
|
||||
mapped?.shsNam,
|
||||
mapped?.ChassisNumberField,
|
||||
rawData?.ChassisNo,
|
||||
rawData?.chassisNo,
|
||||
rawData?.ShsNum,
|
||||
rawData?.shsNam,
|
||||
rawData?.ChassisNumberField,
|
||||
];
|
||||
const unique: string[] = [];
|
||||
const seen = new Set<string>();
|
||||
for (const value of values) {
|
||||
const vin = normalizeVin(value);
|
||||
if (!vin || seen.has(vin)) continue;
|
||||
seen.add(vin);
|
||||
unique.push(vin);
|
||||
}
|
||||
return unique;
|
||||
}
|
||||
|
||||
export type FanavaranPlaqueLookupFields = {
|
||||
|
||||
Reference in New Issue
Block a user