forked from Yara724/api
Fixed car components
This commit is contained in:
@@ -18,7 +18,6 @@ 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";
|
||||||
@@ -245,6 +244,32 @@ interface FanavaranAttachmentCandidate {
|
|||||||
submittedFileId?: unknown;
|
submittedFileId?: unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns today's Jalali date as a packed integer YYYYMMDD for cheap comparison.
|
||||||
|
* Uses the browser/Node `fa-IR` locale which is available everywhere Node runs.
|
||||||
|
*/
|
||||||
|
function jalaliDateToInt(d: Date): number {
|
||||||
|
const parts = d
|
||||||
|
.toLocaleDateString("fa-IR", { year: "numeric", month: "2-digit", day: "2-digit" })
|
||||||
|
.split("/")
|
||||||
|
.map((p) => parseInt(p.replace(/[۰-۹]/g, (c) => String(c.charCodeAt(0) - 0x06f0)), 10));
|
||||||
|
return parts[0] * 10000 + parts[1] * 100 + parts[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses a Jalali date string in "YYYY/MM/DD" or "YYYY-MM-DD" form to the same
|
||||||
|
* packed integer YYYYMMDD. Returns null when the string cannot be parsed.
|
||||||
|
*/
|
||||||
|
function jalaliStringToInt(raw: string): number | null {
|
||||||
|
const m = raw.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})/);
|
||||||
|
if (!m) return null;
|
||||||
|
const y = parseInt(m[1], 10);
|
||||||
|
const mo = parseInt(m[2], 10);
|
||||||
|
const d = parseInt(m[3], 10);
|
||||||
|
if (!y || !mo || !d) return null;
|
||||||
|
return y * 10000 + mo * 100 + d;
|
||||||
|
}
|
||||||
|
|
||||||
const FANAVARAN_ACCIDENT_LOCATION_ADDRESS = "استان تهران شهر تهران";
|
const FANAVARAN_ACCIDENT_LOCATION_ADDRESS = "استان تهران شهر تهران";
|
||||||
const FANAVARAN_DEFAULT_ACCIDENT_CAUSE_ID = 6;
|
const FANAVARAN_DEFAULT_ACCIDENT_CAUSE_ID = 6;
|
||||||
const FANAVARAN_DEFAULT_ACCIDENT_LEVEL = 5456;
|
const FANAVARAN_DEFAULT_ACCIDENT_LEVEL = 5456;
|
||||||
@@ -578,8 +603,9 @@ 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();
|
// Build today's Jalali date as a comparable integer (YYYYMMDD) so we can
|
||||||
today.setHours(0, 0, 0, 0);
|
// filter expired rows without any Jalali→Gregorian conversion risk.
|
||||||
|
const todayJalaliInt = jalaliDateToInt(new Date());
|
||||||
return rows
|
return rows
|
||||||
.filter(
|
.filter(
|
||||||
(r): r is { Id: number; Caption: string } =>
|
(r): r is { Id: number; Caption: string } =>
|
||||||
@@ -591,9 +617,9 @@ export class ClaimRequestManagementService {
|
|||||||
.filter((r) => {
|
.filter((r) => {
|
||||||
const toDate = (r as any).ToDate;
|
const toDate = (r as any).ToDate;
|
||||||
if (!toDate) return true;
|
if (!toDate) return true;
|
||||||
const gregorian = jalaliToGregorianDate(String(toDate));
|
const toDateInt = jalaliStringToInt(String(toDate));
|
||||||
if (!gregorian) return true;
|
if (toDateInt === null) return true;
|
||||||
return new Date(gregorian) >= today;
|
return toDateInt >= todayJalaliInt;
|
||||||
})
|
})
|
||||||
.map((r) => ({ id: r.Id, label_fa: r.Caption }));
|
.map((r) => ({ id: r.Id, label_fa: r.Caption }));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user