forked from Yara724/api
Tidied up the project
This commit is contained in:
@@ -9,12 +9,12 @@ import {
|
||||
ServiceUnavailableException,
|
||||
UnauthorizedException,
|
||||
} from "@nestjs/common";
|
||||
import axios from "axios";
|
||||
import { SandHubDbService } from "src/sand-hub/entity/db-service/sand-hub.db.service";
|
||||
import { SandHubModel } from "src/sand-hub/entity/schema/sand-hub.schema";
|
||||
import { SystemSettingsService } from "src/system-settings/system-settings.service";
|
||||
import { SandHubDetailDto } from "./dto/sand-hub.dto";
|
||||
import { jalaliToGregorianDate } from "src/helpers/date-jalali";
|
||||
import { firstValueFrom } from "rxjs";
|
||||
|
||||
@Injectable()
|
||||
export class SandHubService {
|
||||
@@ -123,8 +123,7 @@ export class SandHubService {
|
||||
const u = (url || "").toLowerCase();
|
||||
if (u.includes("personal-inquiry")) {
|
||||
const p = payload as { nationalCode?: string } | undefined;
|
||||
const nin =
|
||||
typeof p?.nationalCode === "string" ? p.nationalCode : "-";
|
||||
const nin = typeof p?.nationalCode === "string" ? p.nationalCode : "-";
|
||||
return {
|
||||
message: "success",
|
||||
data: {
|
||||
@@ -182,12 +181,11 @@ export class SandHubService {
|
||||
);
|
||||
|
||||
try {
|
||||
const response = await this.httpService.axiosRef.post(
|
||||
process.env.SANDHUB_URL_LOGIN,
|
||||
{
|
||||
const response = await firstValueFrom(
|
||||
this.httpService.post(process.env.SANDHUB_URL_LOGIN, {
|
||||
email: process.env.SANDHUB_USERNAME,
|
||||
password: process.env.SANDHUB_PASSWORD,
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
const token = response.data.accessToken;
|
||||
@@ -237,16 +235,18 @@ export class SandHubService {
|
||||
);
|
||||
|
||||
try {
|
||||
const response = await this.httpService.axiosRef.post(
|
||||
`${baseUrl}/user/login`,
|
||||
{ email, password },
|
||||
{
|
||||
headers: {
|
||||
Accept: "*/*",
|
||||
"Content-Type": "application/json",
|
||||
const response = await firstValueFrom(
|
||||
this.httpService.post(
|
||||
`${baseUrl}/user/login`,
|
||||
{ email, password },
|
||||
{
|
||||
headers: {
|
||||
Accept: "*/*",
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
timeout: 30000,
|
||||
},
|
||||
timeout: 30000,
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
const token = response.data?.accessToken;
|
||||
@@ -260,7 +260,10 @@ export class SandHubService {
|
||||
|
||||
return this.tejaratAccessToken;
|
||||
} catch (er) {
|
||||
this.logger.error("Failed to login to Tejarat inquiry:", er?.message || er);
|
||||
this.logger.error(
|
||||
"Failed to login to Tejarat inquiry:",
|
||||
er?.message || er,
|
||||
);
|
||||
this.tejaratAccessToken = null;
|
||||
this.tejaratTokenExpiry = null;
|
||||
throw new UnauthorizedException("Tejarat inquiry authentication failed");
|
||||
@@ -278,14 +281,16 @@ export class SandHubService {
|
||||
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
||||
const token = await this.getTejaratAccessToken();
|
||||
try {
|
||||
const response = await axios.post(url, payload, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
},
|
||||
timeout: 30000,
|
||||
});
|
||||
const response = await firstValueFrom(
|
||||
this.httpService.post(url, payload, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
},
|
||||
timeout: 30000,
|
||||
}),
|
||||
);
|
||||
if (!response?.data) throw new Error("EMPTY_RESPONSE");
|
||||
return response.data;
|
||||
} catch (err: any) {
|
||||
@@ -361,14 +366,16 @@ export class SandHubService {
|
||||
|
||||
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
||||
try {
|
||||
const response = await axios.post(url, payload, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
},
|
||||
timeout: 50000,
|
||||
});
|
||||
const response = await firstValueFrom(
|
||||
this.httpService.post(url, payload, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
},
|
||||
timeout: 50000,
|
||||
}),
|
||||
);
|
||||
if (!response?.data) throw new Error("EMPTY_RESPONSE");
|
||||
return response.data;
|
||||
} catch (err) {
|
||||
@@ -394,53 +401,67 @@ export class SandHubService {
|
||||
// Company information
|
||||
CompanyCode: newResponse.companyId || newResponse.CompanyCode,
|
||||
CompanyName: newResponse.companyPersianName || newResponse.CompanyName,
|
||||
|
||||
|
||||
// Vehicle information
|
||||
MapTypNam: newResponse.vehiclePersianName || newResponse.MapTypNam,
|
||||
UsageField: newResponse.persianCarType || newResponse.UsageField || (newResponse.usgCod === "8" ? "شخصی" : "نامشخص"),
|
||||
UsageField:
|
||||
newResponse.persianCarType ||
|
||||
newResponse.UsageField ||
|
||||
(newResponse.usgCod === "8" ? "شخصی" : "نامشخص"),
|
||||
MapUsageName: newResponse.MapUsageName || newResponse.MapUsageName,
|
||||
|
||||
|
||||
// Financial coverage
|
||||
FinancialCvrCptl: newResponse.financeCoverage || newResponse.FinancialCvrCptl || "0",
|
||||
|
||||
FinancialCvrCptl:
|
||||
newResponse.financeCoverage || newResponse.FinancialCvrCptl || "0",
|
||||
|
||||
// Dates
|
||||
IssueDate: newResponse.persianStartDate || newResponse.IssueDate,
|
||||
EndDate: newResponse.persianEndDate || newResponse.EndDate,
|
||||
|
||||
|
||||
// Insurance details
|
||||
LastCompanyDocumentNumber: newResponse.lastCompanyInsuranceNumber || newResponse.LastCompanyDocumentNumber || newResponse.insuranceNumber,
|
||||
|
||||
LastCompanyDocumentNumber:
|
||||
newResponse.lastCompanyInsuranceNumber ||
|
||||
newResponse.LastCompanyDocumentNumber ||
|
||||
newResponse.insuranceNumber,
|
||||
|
||||
// Technical details
|
||||
MtrNum: newResponse.MtrNum || newResponse.mtrnum,
|
||||
ShsNum: newResponse.ShsNum || newResponse.shsNam || newResponse.ChassisNumberField,
|
||||
ShsNum:
|
||||
newResponse.ShsNum ||
|
||||
newResponse.shsNam ||
|
||||
newResponse.ChassisNumberField,
|
||||
vin: newResponse.vin || newResponse.VinNumberField || newResponse.vin,
|
||||
VinNumberField: newResponse.vin || newResponse.VinNumberField,
|
||||
ChassisNumberField: newResponse.ChassisNumberField || newResponse.shsNam,
|
||||
EngineNumberField: newResponse.EngineNumberField || newResponse.mtrnum,
|
||||
ModelField: newResponse.ModelField || newResponse.ModelField,
|
||||
|
||||
|
||||
// Discount information
|
||||
DisFnYrPrcnt: newResponse.DisFnYrPrcnt || newResponse.disFnYrPrcnt || "0",
|
||||
DisLfYrPrcnt: newResponse.DisLfYrPrcnt || newResponse.disLfYrPrcnt || "0",
|
||||
DisPrsnYrPrcnt: newResponse.DisPrsnYrPrcnt || newResponse.disPrsnYrPrcnt || "0",
|
||||
DisPrsnYrPrcnt:
|
||||
newResponse.DisPrsnYrPrcnt || newResponse.disPrsnYrPrcnt || "0",
|
||||
DisFnYrNum: newResponse.DisFnYrNum || newResponse.disFnYrNum,
|
||||
DisLfYrNum: newResponse.DisLfYrNum || newResponse.disLfYrNum,
|
||||
DisPrsnYrNum: newResponse.DisPrsnYrNum || newResponse.disPrsnYrNum,
|
||||
|
||||
|
||||
// Usage and vehicle system codes
|
||||
UsageCode: newResponse.UsageCode || newResponse.usgCod,
|
||||
VehicleSystemCode: newResponse.VehicleSystemCode || newResponse.vehSysCod,
|
||||
CarGroupCode: newResponse.CarGroupCode || newResponse.carGrpCod,
|
||||
|
||||
|
||||
// Policy information
|
||||
ThirdPolicyCode: newResponse.ThirdPolicyCode || newResponse.ThirdPolicyCode,
|
||||
|
||||
ThirdPolicyCode:
|
||||
newResponse.ThirdPolicyCode || newResponse.ThirdPolicyCode,
|
||||
|
||||
// Endorsement data
|
||||
EdrsJson: newResponse.EdrsJson || (newResponse.edrSes ? JSON.stringify(newResponse.edrSes) : undefined),
|
||||
|
||||
EdrsJson:
|
||||
newResponse.EdrsJson ||
|
||||
(newResponse.edrSes ? JSON.stringify(newResponse.edrSes) : undefined),
|
||||
|
||||
// Insurance fullname
|
||||
InsuranceFullName: newResponse.InsuranceFullName || newResponse.fullname,
|
||||
|
||||
|
||||
// National code
|
||||
nationalCode: newResponse.nationalCode || newResponse.ntnlId,
|
||||
};
|
||||
@@ -486,10 +507,7 @@ export class SandHubService {
|
||||
* this codebase has the value as a Jalali date (number `13770624` or string
|
||||
* `"1377-06-24"`/`"1377/06/24"`). We convert here so callers don't have to.
|
||||
*/
|
||||
async getPersonalInquiry(
|
||||
nationalCode: string,
|
||||
birthDate: number | string,
|
||||
) {
|
||||
async getPersonalInquiry(nationalCode: string, birthDate: number | string) {
|
||||
try {
|
||||
const requestUrl = `${process.env.SANDHUB_BASE_URL}/personal-inquiry/tejarat-no`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user