From 470f6e0920d7ab47d18d73723d5fe2b9cb4f2bdc Mon Sep 17 00:00:00 2001 From: "s.hajizadeh" Date: Mon, 7 Sep 2026 10:47:32 +0330 Subject: [PATCH] update yara --- .../claim-request-management.service.ts | 10 +--- .../claim-request-management.v2.controller.ts | 2 +- .../dto/claim-details-v2.dto.ts | 13 ++++-- .../fanavaran-claim-references.spec.ts | 46 +++++++++++++++++++ .../fanavaran-claim-references.ts | 31 +++++++++++++ src/expert-claim/dto/claim-detail-v2.dto.ts | 13 ++++-- src/expert-claim/expert-claim.service.ts | 10 +--- .../expert-claim.v2.controller.ts | 2 +- 8 files changed, 103 insertions(+), 24 deletions(-) create mode 100644 src/claim-request-management/fanavaran-claim-references.spec.ts create mode 100644 src/claim-request-management/fanavaran-claim-references.ts diff --git a/src/claim-request-management/claim-request-management.service.ts b/src/claim-request-management/claim-request-management.service.ts index bddf422..e3fea44 100644 --- a/src/claim-request-management/claim-request-management.service.ts +++ b/src/claim-request-management/claim-request-management.service.ts @@ -35,6 +35,7 @@ import { UserObjectionV2Dto } from "./dto/user-objection-v2.dto"; import { CarGreenCardDbService } from "./entites/db-service/car-green-card.db.service"; import { ClaimRequestManagementDbService } from "./entites/db-service/claim-request-management.db.service"; import { ClaimCaseDbService } from "./entites/db-service/claim-case.db.service"; +import { fanavaranClaimReferences } from "./fanavaran-claim-references"; import { BlameRequestDbService } from "src/request-management/entities/db-service/blame-request.db.service"; import { CreateClaimFromBlameResponseDto } from "./dto/create-claim-v2.dto"; import { @@ -11157,14 +11158,7 @@ export class ClaimRequestManagementService { carAngles, damagedParts, expertResend, - fanavaran: - claim.status === ClaimCaseStatus.COMPLETED && - (claim.claimNo != null || claim.claimId != null) - ? { - claimNo: claim.claimNo, - claimId: claim.claimId, - } - : undefined, + fanavaran: fanavaranClaimReferences(claim), evaluation: mappedEvaluation ? { damageExpertReply: mappedEvaluation.damageExpertReply, diff --git a/src/claim-request-management/claim-request-management.v2.controller.ts b/src/claim-request-management/claim-request-management.v2.controller.ts index fba39a9..bd6c620 100644 --- a/src/claim-request-management/claim-request-management.v2.controller.ts +++ b/src/claim-request-management/claim-request-management.v2.controller.ts @@ -117,7 +117,7 @@ export class ClaimRequestManagementV2Controller { @ApiOperation({ summary: "Get Claim Details (V2)", description: - "Returns the claim snapshot for an authorized **USER**, **FIELD_EXPERT**, **REGISTRAR**, **FILE_MAKER**, or assigned **FILE_REVIEWER**. Initiating experts/registrars see unmasked money fields; owners get `ownerGuidance`. Completed claims include Fanavaran `claimNo` / `claimId` when available.", + "Returns the claim snapshot for an authorized **USER**, **FIELD_EXPERT**, **REGISTRAR**, **FILE_MAKER**, or assigned **FILE_REVIEWER**. Initiating experts/registrars see unmasked money fields; owners get `ownerGuidance`. Completed claims include Fanavaran `claimId` / `claimNo` / `dmgCaseId` / `expertiseId` when available.", }) @ApiResponse({ status: 200, diff --git a/src/claim-request-management/dto/claim-details-v2.dto.ts b/src/claim-request-management/dto/claim-details-v2.dto.ts index 6a13ab3..ce35198 100644 --- a/src/claim-request-management/dto/claim-details-v2.dto.ts +++ b/src/claim-request-management/dto/claim-details-v2.dto.ts @@ -212,12 +212,19 @@ export class ClaimDetailsV2ResponseDto { @ApiPropertyOptional({ description: - 'Fanavaran claim reference. Returned only after the local claim reaches COMPLETED and Fanavaran has supplied at least one reference.', - example: { claimNo: 123456, claimId: 987654 }, + "Fanavaran claim reference. Returned only after the local claim reaches COMPLETED. Each of claimId, claimNo, dmgCaseId, and expertiseId is included when Fanavaran has supplied it.", + example: { + claimId: 987654, + claimNo: 123456, + dmgCaseId: 11, + expertiseId: 22, + }, }) fanavaran?: { - claimNo?: number; claimId?: number; + claimNo?: number; + dmgCaseId?: number; + expertiseId?: number; }; @ApiPropertyOptional({ diff --git a/src/claim-request-management/fanavaran-claim-references.spec.ts b/src/claim-request-management/fanavaran-claim-references.spec.ts new file mode 100644 index 0000000..0ee70f5 --- /dev/null +++ b/src/claim-request-management/fanavaran-claim-references.spec.ts @@ -0,0 +1,46 @@ +import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum"; +import { fanavaranClaimReferences } from "./fanavaran-claim-references"; + +describe("fanavaranClaimReferences", () => { + it("returns all four Fanavaran ids when the claim is completed", () => { + expect( + fanavaranClaimReferences({ + status: ClaimCaseStatus.COMPLETED, + claimId: 987654, + claimNo: 123456, + dmgCaseId: 11, + expertiseId: 22, + }), + ).toEqual({ + claimId: 987654, + claimNo: 123456, + dmgCaseId: 11, + expertiseId: 22, + }); + }); + + it("omits missing ids", () => { + expect( + fanavaranClaimReferences({ + status: ClaimCaseStatus.COMPLETED, + claimId: 987654, + claimNo: null, + dmgCaseId: undefined, + expertiseId: 22, + }), + ).toEqual({ + claimId: 987654, + expertiseId: 22, + }); + }); + + it("returns undefined before the claim is completed", () => { + expect( + fanavaranClaimReferences({ + status: ClaimCaseStatus.EXPERT_REVIEWING, + claimId: 987654, + dmgCaseId: 11, + }), + ).toBeUndefined(); + }); +}); diff --git a/src/claim-request-management/fanavaran-claim-references.ts b/src/claim-request-management/fanavaran-claim-references.ts new file mode 100644 index 0000000..f59b809 --- /dev/null +++ b/src/claim-request-management/fanavaran-claim-references.ts @@ -0,0 +1,31 @@ +import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum"; + +export type FanavaranClaimReferences = { + claimId?: number; + claimNo?: number; + dmgCaseId?: number; + expertiseId?: 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; +}): 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; + + return Object.keys(refs).length > 0 ? refs : undefined; +} diff --git a/src/expert-claim/dto/claim-detail-v2.dto.ts b/src/expert-claim/dto/claim-detail-v2.dto.ts index 62a4d97..5ae32fe 100644 --- a/src/expert-claim/dto/claim-detail-v2.dto.ts +++ b/src/expert-claim/dto/claim-detail-v2.dto.ts @@ -165,12 +165,19 @@ export class ClaimDetailV2ResponseDto { @ApiPropertyOptional({ description: - "Fanavaran claim reference. Returned only after the local claim reaches COMPLETED and Fanavaran has supplied at least one reference.", - example: { claimNo: 123456, claimId: 987654 }, + "Fanavaran claim reference. Returned only after the local claim reaches COMPLETED. Each of claimId, claimNo, dmgCaseId, and expertiseId is included when Fanavaran has supplied it.", + example: { + claimId: 987654, + claimNo: 123456, + dmgCaseId: 11, + expertiseId: 22, + }, }) fanavaran?: { - claimNo?: number; claimId?: number; + claimNo?: number; + dmgCaseId?: number; + expertiseId?: number; }; @ApiPropertyOptional({ diff --git a/src/expert-claim/expert-claim.service.ts b/src/expert-claim/expert-claim.service.ts index 0960f63..fed0825 100644 --- a/src/expert-claim/expert-claim.service.ts +++ b/src/expert-claim/expert-claim.service.ts @@ -58,6 +58,7 @@ import { import { ClaimPerIdRs } from "./dto/claim-list-perId-rs.dto"; import { ClaimListDtoRs } from "./dto/claim-list-rs.dto"; import { ClaimCaseDbService } from "src/claim-request-management/entites/db-service/claim-case.db.service"; +import { fanavaranClaimReferences } from "src/claim-request-management/fanavaran-claim-references"; import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum"; import { ClaimStatus } from "src/Types&Enums/claim-request-management/claimStatus.enum"; import { RoleEnum } from "src/Types&Enums/role.enum"; @@ -5180,14 +5181,7 @@ export class ExpertClaimService { fileMakerApprovalActorId: (claim as any).fileMakerApprovalActorId ? String((claim as any).fileMakerApprovalActorId) : undefined, - fanavaran: - claim.status === ClaimCaseStatus.COMPLETED && - (claim.claimNo != null || claim.claimId != null) - ? { - claimNo: claim.claimNo, - claimId: claim.claimId, - } - : undefined, + fanavaran: fanavaranClaimReferences(claim), evaluation: (evaluationForApi as | ClaimDetailV2ResponseDto["evaluation"] diff --git a/src/expert-claim/expert-claim.v2.controller.ts b/src/expert-claim/expert-claim.v2.controller.ts index 56b2032..02172be 100644 --- a/src/expert-claim/expert-claim.v2.controller.ts +++ b/src/expert-claim/expert-claim.v2.controller.ts @@ -166,7 +166,7 @@ export class ExpertClaimV2Controller { @ApiOperation({ summary: "Get claim request detail for damage expert", description: - "Returns full claim details including captured images, required documents, damage selections, `evaluation.priceDrop` (included whenever saved, regardless of current status), `videoCapture` (from claim-video-capture via media.videoCaptureId), and `blameCase` (linked blameCases document with party video/voice URLs like expert-blame detail). `evaluation.damageExpertReply` / `damageExpertReplyFinal` are always returned once submitted. Completed claims include Fanavaran `claimNo` / `claimId` when available. Allowed when status is WAITING_FOR_DAMAGE_EXPERT (if locked, only the locking expert) or when awaiting factor validation.", + "Returns full claim details including captured images, required documents, damage selections, `evaluation.priceDrop` (included whenever saved, regardless of current status), `videoCapture` (from claim-video-capture via media.videoCaptureId), and `blameCase` (linked blameCases document with party video/voice URLs like expert-blame detail). `evaluation.damageExpertReply` / `damageExpertReplyFinal` are always returned once submitted. Completed claims include Fanavaran `claimId` / `claimNo` / `dmgCaseId` / `expertiseId` when available. Allowed when status is WAITING_FOR_DAMAGE_EXPERT (if locked, only the locking expert) or when awaiting factor validation.", }) @ApiParam({ name: "claimRequestId" }) async getClaimDetailV2(