Merge pull request 'Fix v5 + Fix ToDate field for damaged parts' (#251) from s.yahyaee/yara724-api:main into main

Reviewed-on: Yara724/api#251
This commit is contained in:
2026-08-03 18:48:46 +03:30
2 changed files with 42 additions and 2 deletions

View File

@@ -18,6 +18,7 @@ import { basename, resolve } from "node:path";
import FormData = require("form-data"); import FormData = require("form-data");
import { AiService } from "src/ai/ai.service"; import { AiService } from "src/ai/ai.service";
import { buildFileLink, resolveStoredFileUrl } from "src/helpers/urlCreator"; import { buildFileLink, resolveStoredFileUrl } from "src/helpers/urlCreator";
import { jalaliToGregorianDate } from "src/helpers/date-jalali";
import { RequestManagementDbService } from "src/request-management/entities/db-service/request-management.db.service"; import { RequestManagementDbService } from "src/request-management/entities/db-service/request-management.db.service";
import { ReqBlameStatus } from "src/Types&Enums/blame-request-management/status.enum"; import { ReqBlameStatus } from "src/Types&Enums/blame-request-management/status.enum";
import { ReqClaimStatus } from "src/Types&Enums/claim-request-management/status.enum"; import { ReqClaimStatus } from "src/Types&Enums/claim-request-management/status.enum";
@@ -577,6 +578,8 @@ export class ClaimRequestManagementService {
async getOuterPartsCatalogV2(): Promise<OuterPartCatalogItemDto[]> { async getOuterPartsCatalogV2(): Promise<OuterPartCatalogItemDto[]> {
const clientKey = resolveFanavaranClientKey(); const clientKey = resolveFanavaranClientKey();
const rows = await this.getFanavaranLookupRows(clientKey, "car-components"); const rows = await this.getFanavaranLookupRows(clientKey, "car-components");
const today = new Date();
today.setHours(0, 0, 0, 0);
return rows return rows
.filter( .filter(
(r): r is { Id: number; Caption: string } => (r): r is { Id: number; Caption: string } =>
@@ -585,6 +588,13 @@ export class ClaimRequestManagementService {
typeof (r as any).Id === "number" && typeof (r as any).Id === "number" &&
typeof (r as any).Caption === "string", typeof (r as any).Caption === "string",
) )
.filter((r) => {
const toDate = (r as any).ToDate;
if (!toDate) return true;
const gregorian = jalaliToGregorianDate(String(toDate));
if (!gregorian) return true;
return new Date(gregorian) >= today;
})
.map((r) => ({ id: r.Id, label_fa: r.Caption })); .map((r) => ({ id: r.Id, label_fa: r.Caption }));
} }

View File

@@ -11081,6 +11081,9 @@ export class RequestManagementService {
: { ...(req as any) }; : { ...(req as any) };
// Attach linked claim ID if present // Attach linked claim ID if present
const claim = await this.claimCaseDbService.findOne({ blameRequestId: (req as any)._id }); const claim = await this.claimCaseDbService.findOne({ blameRequestId: (req as any)._id });
const claimPlain = claim && typeof (claim as any).toObject === "function"
? (claim as any).toObject({ versionKey: false })
: claim ? { ...(claim as any) } : null;
return { return {
_id: plain._id, _id: plain._id,
publicId: plain.publicId, publicId: plain.publicId,
@@ -11115,7 +11118,19 @@ export class RequestManagementService {
inquiryComplete: !!(p.person?.inquiriesCompleted), inquiryComplete: !!(p.person?.inquiriesCompleted),
hasSigned: p.confirmation != null, hasSigned: p.confirmation != null,
})), })),
linkedClaimId: claim ? String((claim as any)._id) : null, linkedClaimId: claimPlain ? String(claimPlain._id) : null,
...(claimPlain ? {
claimStatus: claimPlain.status,
claimWorkflow: claimPlain.workflow,
fileMakerRejectionCount: claimPlain.fileMakerRejectionCount ?? 0,
fileMakerRejectionReason: claimPlain.fileMakerRejectionReason ?? null,
evaluation: claimPlain.evaluation
? {
damageExpertReply: claimPlain.evaluation.damageExpertReply ?? null,
damageExpertReplyFinal: claimPlain.evaluation.damageExpertReplyFinal ?? null,
}
: null,
} : {}),
createdAt: plain.createdAt, createdAt: plain.createdAt,
updatedAt: plain.updatedAt, updatedAt: plain.updatedAt,
}; };
@@ -11169,6 +11184,9 @@ export class RequestManagementService {
? (req as any).toObject({ versionKey: false }) ? (req as any).toObject({ versionKey: false })
: { ...(req as any) }; : { ...(req as any) };
const claim = await this.claimCaseDbService.findOne({ blameRequestId: (req as any)._id }); const claim = await this.claimCaseDbService.findOne({ blameRequestId: (req as any)._id });
const claimPlain = claim && typeof (claim as any).toObject === "function"
? (claim as any).toObject({ versionKey: false })
: claim ? { ...(claim as any) } : null;
return { return {
_id: plain._id, _id: plain._id,
publicId: plain.publicId, publicId: plain.publicId,
@@ -11216,7 +11234,19 @@ export class RequestManagementService {
} : undefined, } : undefined,
accidentFields: plain.expert.accidentFields, accidentFields: plain.expert.accidentFields,
} : undefined, } : undefined,
linkedClaimId: claim ? String((claim as any)._id) : null, linkedClaimId: claimPlain ? String(claimPlain._id) : null,
...(claimPlain ? {
claimStatus: claimPlain.status,
claimWorkflow: claimPlain.workflow,
fileMakerRejectionCount: claimPlain.fileMakerRejectionCount ?? 0,
fileMakerRejectionReason: claimPlain.fileMakerRejectionReason ?? null,
evaluation: claimPlain.evaluation
? {
damageExpertReply: claimPlain.evaluation.damageExpertReply ?? null,
damageExpertReplyFinal: claimPlain.evaluation.damageExpertReplyFinal ?? null,
}
: null,
} : {}),
createdAt: plain.createdAt, createdAt: plain.createdAt,
updatedAt: plain.updatedAt, updatedAt: plain.updatedAt,
}; };