forked from Yara724/api
Compare commits
2 Commits
3635dc2c10
...
eb6cef1127
| Author | SHA1 | Date | |
|---|---|---|---|
| eb6cef1127 | |||
| f98712ba83 |
@@ -207,6 +207,7 @@ import {
|
|||||||
import {
|
import {
|
||||||
asObjectRecord,
|
asObjectRecord,
|
||||||
collectPartyVinCandidates,
|
collectPartyVinCandidates,
|
||||||
|
fanavaranIdOrConfigDefault,
|
||||||
normalizeVin,
|
normalizeVin,
|
||||||
parseFanavaranId,
|
parseFanavaranId,
|
||||||
pickFanavaranPlaqueLookupFields,
|
pickFanavaranPlaqueLookupFields,
|
||||||
@@ -4254,26 +4255,34 @@ export class ClaimRequestManagementService {
|
|||||||
const inquiryPlaque = pickFanavaranPlaqueLookupFields(
|
const inquiryPlaque = pickFanavaranPlaqueLookupFields(
|
||||||
asObjectRecord(inquiryMapped) ?? asObjectRecord(inquiryRaw),
|
asObjectRecord(inquiryMapped) ?? asObjectRecord(inquiryRaw),
|
||||||
);
|
);
|
||||||
const plaqueKindId = this.firstPositiveFanavaranId(
|
const plaqueKindFromApi = this.firstPositiveFanavaranId(
|
||||||
apiPlaque.kindId,
|
apiPlaque.kindId,
|
||||||
inquiryPlaque.kindId,
|
inquiryPlaque.kindId,
|
||||||
cachedDamage.plaqueKindId,
|
cachedDamage.plaqueKindId,
|
||||||
lastDamagePayload?.PlaqueKindId,
|
lastDamagePayload?.PlaqueKindId,
|
||||||
);
|
);
|
||||||
const plaqueSampleId = this.firstPositiveFanavaranId(
|
const plaqueSampleFromApi = this.firstPositiveFanavaranId(
|
||||||
apiPlaque.sampleId,
|
apiPlaque.sampleId,
|
||||||
inquiryPlaque.sampleId,
|
inquiryPlaque.sampleId,
|
||||||
cachedDamage.plaqueSampleId,
|
cachedDamage.plaqueSampleId,
|
||||||
lastDamagePayload?.PlaqueSampleId,
|
lastDamagePayload?.PlaqueSampleId,
|
||||||
);
|
);
|
||||||
if (apiPlaque.kindId == null && plaqueKindId != null) {
|
const plaqueKindId = fanavaranIdOrConfigDefault(
|
||||||
|
plaqueKindFromApi,
|
||||||
|
input.defaults.PlaqueKindId,
|
||||||
|
);
|
||||||
|
const plaqueSampleId = fanavaranIdOrConfigDefault(
|
||||||
|
plaqueSampleFromApi,
|
||||||
|
input.defaults.PlaqueSampleId,
|
||||||
|
);
|
||||||
|
if (plaqueKindFromApi == null) {
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`[buildFanavaranDamageCasePayload] PlaqueKindId API miss; using DB value ${plaqueKindId}`,
|
`[buildFanavaranDamageCasePayload] PlaqueKindId API miss; using config default ${plaqueKindId}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (apiPlaque.sampleId == null && plaqueSampleId != null) {
|
if (plaqueSampleFromApi == null) {
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`[buildFanavaranDamageCasePayload] PlaqueSampleId API miss; using DB value ${plaqueSampleId}`,
|
`[buildFanavaranDamageCasePayload] PlaqueSampleId API miss; using config default ${plaqueSampleId}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
const builtYear =
|
const builtYear =
|
||||||
@@ -4385,6 +4394,12 @@ export class ClaimRequestManagementService {
|
|||||||
null,
|
null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if (accidentVehicleUsedId == null) {
|
||||||
|
accidentVehicleUsedId = input.defaults.AccidentVehicleUsedId;
|
||||||
|
this.logger.log(
|
||||||
|
`[buildFanavaranDamageCasePayload] AccidentVehicleUsedId API miss; using config default ${accidentVehicleUsedId}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
this.logger.log(
|
this.logger.log(
|
||||||
`[buildFanavaranDamageCasePayload] Final DriverId=${driverFanavaranId ?? "NULL"} for nationalCode=${pickPersonNationalCode(person) ?? "MISSING"}, ` +
|
`[buildFanavaranDamageCasePayload] Final DriverId=${driverFanavaranId ?? "NULL"} for nationalCode=${pickPersonNationalCode(person) ?? "MISSING"}, ` +
|
||||||
@@ -5187,7 +5202,8 @@ export class ClaimRequestManagementService {
|
|||||||
persistPayload?: boolean;
|
persistPayload?: boolean;
|
||||||
/**
|
/**
|
||||||
* Re-run VIN inquiry / vehicle GET for AccidentVehicleUsedId.
|
* Re-run VIN inquiry / vehicle GET for AccidentVehicleUsedId.
|
||||||
* Submit always sets this so Mongo tenant default 1 cannot be reused.
|
* Submit always re-inquires. If the API still returns nothing, the
|
||||||
|
* tenant config default is used.
|
||||||
*/
|
*/
|
||||||
forceRefreshUsedId?: boolean;
|
forceRefreshUsedId?: boolean;
|
||||||
},
|
},
|
||||||
@@ -5402,6 +5418,14 @@ export class ClaimRequestManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parseFanavaranId(payload.AccidentVehicleUsedId) == null) {
|
||||||
|
payload.AccidentVehicleUsedId =
|
||||||
|
profile.defaults.AccidentVehicleUsedId;
|
||||||
|
this.logger.log(
|
||||||
|
`${logPrefix} AccidentVehicleUsedId API miss; using config default ${payload.AccidentVehicleUsedId}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (persistPayload) {
|
if (persistPayload) {
|
||||||
await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, {
|
await this.claimCaseDbService.findByIdAndUpdate(claimCaseId, {
|
||||||
$set: {
|
$set: {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
collectPartyVinCandidates,
|
collectPartyVinCandidates,
|
||||||
|
fanavaranIdOrConfigDefault,
|
||||||
filterPoliciesByLine,
|
filterPoliciesByLine,
|
||||||
insuranceLineLabel,
|
insuranceLineLabel,
|
||||||
parseLastCarPolicyInput,
|
parseLastCarPolicyInput,
|
||||||
@@ -172,6 +173,12 @@ describe("fanavaran last car policy", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses tenant config default when the API id is missing", () => {
|
||||||
|
expect(fanavaranIdOrConfigDefault(15, 8)).toBe(15);
|
||||||
|
expect(fanavaranIdOrConfigDefault(null, 8)).toBe(8);
|
||||||
|
expect(fanavaranIdOrConfigDefault(0, 10)).toBe(10);
|
||||||
|
});
|
||||||
|
|
||||||
it("matches VIN against ChassisNo when VIN is empty", () => {
|
it("matches VIN against ChassisNo when VIN is empty", () => {
|
||||||
expect(
|
expect(
|
||||||
vehicleMatchesCar(
|
vehicleMatchesCar(
|
||||||
|
|||||||
@@ -162,6 +162,14 @@ export function parseFanavaranId(value: unknown): number | null {
|
|||||||
return Number.isFinite(id) && id > 0 ? id : null;
|
return Number.isFinite(id) && id > 0 ? id : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Live Fanavaran / cache id wins; tenant `fanavaranClientConfigs.defaults` if the API returned nothing. */
|
||||||
|
export function fanavaranIdOrConfigDefault(
|
||||||
|
resolved: unknown,
|
||||||
|
configDefault: number,
|
||||||
|
): number {
|
||||||
|
return parseFanavaranId(resolved) ?? configDefault;
|
||||||
|
}
|
||||||
|
|
||||||
export function asObjectRecord(value: unknown): Record<string, unknown> | null {
|
export function asObjectRecord(value: unknown): Record<string, unknown> | null {
|
||||||
if (!value || typeof value !== "object") {
|
if (!value || typeof value !== "object") {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user