From 3fb90cf1c966b52f3d216c929bb5bf6c189c6d6a Mon Sep 17 00:00:00 2001 From: SepehrYahyaee <7heycallmegray@gmail.com> Date: Sun, 10 May 2026 14:04:11 +0330 Subject: [PATCH 1/2] YARA-886 --- src/expert-claim/expert-claim.service.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/expert-claim/expert-claim.service.ts b/src/expert-claim/expert-claim.service.ts index cd75ca8..bc4c707 100644 --- a/src/expert-claim/expert-claim.service.ts +++ b/src/expert-claim/expert-claim.service.ts @@ -239,13 +239,15 @@ export class ExpertClaimService { } /** - * Build a deep-cloned `evaluation` payload with resolved `signLink`s for the - * fields that carry a user signature: + * Build a deep-cloned `evaluation` payload with resolved file URLs the + * front-end can render directly: * * - `damageExpertReply.userComment.signLink` * - `damageExpertReplyFinal.userComment.signLink` * - `ownerInsurerApproval.signLink` * - `ownerPricedPartsApproval.signLink` + * - `damageExpertReply.parts[i].factorLink` (ObjectId → URL) + * - `damageExpertReplyFinal.parts[i].factorLink` (ObjectId → URL) * * Returns `undefined` when there's no evaluation to enrich. */ @@ -255,16 +257,21 @@ export class ExpertClaimService { if (!evaluation || typeof evaluation !== "object") return undefined; const ev = JSON.parse(JSON.stringify(evaluation)) as Record; - const enrichReplyUserComment = async (key: string) => { + const enrichReply = async (key: string) => { const reply = ev[key] as Record | undefined; - const uc = reply?.userComment as Record | undefined; + if (!reply) return; + const uc = reply.userComment as Record | undefined; if (uc?.signDetailId != null) { const signLink = await this.claimSignLinkFromId(uc.signDetailId); - (reply as Record).userComment = { ...uc, signLink }; + reply.userComment = { ...uc, signLink }; } + // Resolve each `parts[].factorLink` ObjectId to a downloadable URL. + // `populateFactorLinks` mutates in place — safe here because `ev` was + // deep-cloned via JSON above, so we never touch the live mongoose doc. + await this.populateFactorLinks(reply); }; - await enrichReplyUserComment("damageExpertReply"); - await enrichReplyUserComment("damageExpertReplyFinal"); + await enrichReply("damageExpertReply"); + await enrichReply("damageExpertReplyFinal"); const enrichApproval = async (key: string) => { const o = ev[key] as Record | undefined; From 186f6c5837d71cf00437e0d62ff29fc8131ca945 Mon Sep 17 00:00:00 2001 From: SepehrYahyaee <7heycallmegray@gmail.com> Date: Sun, 10 May 2026 14:15:38 +0330 Subject: [PATCH 2/2] YARA-884 --- src/request-management/request-management.service.ts | 5 +++-- src/sms-orchestration/sms-orchestration.service.ts | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/request-management/request-management.service.ts b/src/request-management/request-management.service.ts index 7100100..7fbb29b 100644 --- a/src/request-management/request-management.service.ts +++ b/src/request-management/request-management.service.ts @@ -1429,6 +1429,7 @@ export class RequestManagementService { ); await this.smsOrchestrationService.sendInviteLink( secondPartyPhone, + req.publicId, url, ); return { @@ -1477,7 +1478,7 @@ export class RequestManagementService { frontendRoute, requestId, ); - await this.smsOrchestrationService.sendInviteLink(phoneNumber, url); + await this.smsOrchestrationService.sendInviteLink(phoneNumber, req.publicId, url); return { requestId: req._id, @@ -2399,7 +2400,7 @@ export class RequestManagementService { frontendRoutes, requestId, ); - await this.smsOrchestrationService.sendInviteLink(phoneNumber, URL); + await this.smsOrchestrationService.sendInviteLink(phoneNumber, request.publicId, URL); return { url: URL }; } diff --git a/src/sms-orchestration/sms-orchestration.service.ts b/src/sms-orchestration/sms-orchestration.service.ts index 20f3925..65d0b5a 100644 --- a/src/sms-orchestration/sms-orchestration.service.ts +++ b/src/sms-orchestration/sms-orchestration.service.ts @@ -50,11 +50,12 @@ export class SmsOrchestrationService implements OnModuleInit { return `${process.env.URL}/caseClaim?token=${claimRequestId}`; } - async sendInviteLink(phoneNumber: string, link: string): Promise { + async sendInviteLink(phoneNumber: string, publicId: string, link: string): Promise { return this.sendTemplate({ template: "yara724-invite-link", receptor: phoneNumber, - token: link, + token: publicId, + token2: link, }); }