Files
yara724api/src/claim-request-management/fanavaran-claim-references.ts
2026-09-12 10:18:17 +03:30

81 lines
2.6 KiB
TypeScript

import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum";
export type FanavaranClaimReferences = {
claimId?: number;
claimNo?: number;
dmgCaseId?: number;
expertiseId?: number;
policyId?: number;
driverId?: number;
vehicleKindId?: number;
plaqueKindId?: number;
plaqueSampleId?: number;
accidentVehicleUsedId?: number;
insuranceCorpId?: number;
};
/**
* Fanavaran ids for v2 claim GET. Only on COMPLETED; each field is omitted when missing.
*/
export function fanavaranClaimReferences(claim: {
status?: string;
claimId?: number | null;
claimNo?: number | null;
dmgCaseId?: number | null;
expertiseId?: number | null;
fanavaranSync?: {
baseClaim?: FanavaranReferenceStage | null;
damageCase?: FanavaranReferenceStage | null;
} | null;
}): FanavaranClaimReferences | undefined {
if (claim.status !== ClaimCaseStatus.COMPLETED) {
return undefined;
}
const refs: FanavaranClaimReferences = {};
if (claim.claimId != null) refs.claimId = claim.claimId;
if (claim.claimNo != null) refs.claimNo = claim.claimNo;
if (claim.dmgCaseId != null) refs.dmgCaseId = claim.dmgCaseId;
if (claim.expertiseId != null) refs.expertiseId = claim.expertiseId;
const baseClaim = claim.fanavaranSync?.baseClaim;
const damageCase = claim.fanavaranSync?.damageCase;
if (baseClaim?.policyId != null) refs.policyId = baseClaim.policyId;
if ((damageCase?.driverId ?? baseClaim?.driverId) != null) {
refs.driverId = damageCase?.driverId ?? baseClaim?.driverId;
}
if ((damageCase?.vehicleKindId ?? baseClaim?.vehicleKindId) != null) {
refs.vehicleKindId =
damageCase?.vehicleKindId ?? baseClaim?.vehicleKindId;
}
if (damageCase?.plaqueKindId != null) {
refs.plaqueKindId = damageCase.plaqueKindId;
}
if (damageCase?.plaqueSampleId != null) {
refs.plaqueSampleId = damageCase.plaqueSampleId;
}
if (
(damageCase?.accidentVehicleUsedId ?? baseClaim?.accidentVehicleUsedId) !=
null
) {
refs.accidentVehicleUsedId =
damageCase?.accidentVehicleUsedId ?? baseClaim?.accidentVehicleUsedId;
}
if ((damageCase?.insuranceCorpId ?? baseClaim?.insuranceCorpId) != null) {
refs.insuranceCorpId =
damageCase?.insuranceCorpId ?? baseClaim?.insuranceCorpId;
}
return Object.keys(refs).length > 0 ? refs : undefined;
}
type FanavaranReferenceStage = {
policyId?: number | null;
driverId?: number | null;
vehicleKindId?: number | null;
plaqueKindId?: number | null;
plaqueSampleId?: number | null;
accidentVehicleUsedId?: number | null;
insuranceCorpId?: number | null;
};