forked from Yara724/api
Persist inquiry audit on client resolution failures
This commit is contained in:
@@ -1850,9 +1850,25 @@ export class RequestManagementService {
|
|||||||
// Find client by company code
|
// Find client by company code
|
||||||
const clientName = inquiryMapped?.CompanyName;
|
const clientName = inquiryMapped?.CompanyName;
|
||||||
if (!clientName && !policyholderUnknown) {
|
if (!clientName && !policyholderUnknown) {
|
||||||
throw new BadRequestException(
|
const error = new BadRequestException(
|
||||||
`CompanyName missing from inquiry response`,
|
`CompanyName missing from inquiry response`,
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
role,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: inquirySource,
|
||||||
|
plateKind: inquiryPlateKind,
|
||||||
|
attempts: inquiryAttempts,
|
||||||
|
raw: inquiryRaw,
|
||||||
|
mapped: inquiryMapped,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
const companyCode = inquiryMapped?.CompanyCode;
|
const companyCode = inquiryMapped?.CompanyCode;
|
||||||
const client = clientName
|
const client = clientName
|
||||||
@@ -1862,9 +1878,25 @@ export class RequestManagementService {
|
|||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
if (clientName && !client) {
|
if (clientName && !client) {
|
||||||
throw new BadRequestException(
|
const error = new BadRequestException(
|
||||||
`CompanyCode missing or invalid in inquiry response`,
|
`CompanyCode missing or invalid in inquiry response`,
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
role,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: inquirySource,
|
||||||
|
plateKind: inquiryPlateKind,
|
||||||
|
attempts: inquiryAttempts,
|
||||||
|
raw: inquiryRaw,
|
||||||
|
mapped: inquiryMapped,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist inquiry/body data into new model
|
// Persist inquiry/body data into new model
|
||||||
@@ -2240,9 +2272,23 @@ export class RequestManagementService {
|
|||||||
// Resolve insurer client from inquiry response
|
// Resolve insurer client from inquiry response
|
||||||
const clientName = inquiryMapped?.CompanyName;
|
const clientName = inquiryMapped?.CompanyName;
|
||||||
if (!clientName) {
|
if (!clientName) {
|
||||||
throw new BadRequestException(
|
const error = new BadRequestException(
|
||||||
"CompanyName missing from VIN inquiry response",
|
"CompanyName missing from VIN inquiry response",
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
role,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: "ESG_VIN_INQUIRY",
|
||||||
|
raw: inquiryRaw,
|
||||||
|
mapped: inquiryMapped,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
const companyCode = inquiryMapped?.CompanyCode;
|
const companyCode = inquiryMapped?.CompanyCode;
|
||||||
const client = await this.clientService.findOrCreateClientByCompanyCode(
|
const client = await this.clientService.findOrCreateClientByCompanyCode(
|
||||||
@@ -2250,9 +2296,23 @@ export class RequestManagementService {
|
|||||||
clientName,
|
clientName,
|
||||||
);
|
);
|
||||||
if (!client) {
|
if (!client) {
|
||||||
throw new BadRequestException(
|
const error = new BadRequestException(
|
||||||
"CompanyCode missing or invalid in VIN inquiry response",
|
"CompanyCode missing or invalid in VIN inquiry response",
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
role,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: "ESG_VIN_INQUIRY",
|
||||||
|
raw: inquiryRaw,
|
||||||
|
mapped: inquiryMapped,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist party data
|
// Persist party data
|
||||||
@@ -6849,6 +6909,7 @@ export class RequestManagementService {
|
|||||||
}
|
}
|
||||||
const firstPartyPlate = inquirySubmission.dto;
|
const firstPartyPlate = inquirySubmission.dto;
|
||||||
let sandHubReport: any;
|
let sandHubReport: any;
|
||||||
|
let thirdPartyInquiry: any;
|
||||||
try {
|
try {
|
||||||
const inquiry = inquirySubmission.participants.legacy
|
const inquiry = inquirySubmission.participants.legacy
|
||||||
? await (async () => {
|
? await (async () => {
|
||||||
@@ -6867,6 +6928,7 @@ export class RequestManagementService {
|
|||||||
};
|
};
|
||||||
})()
|
})()
|
||||||
: await this.getThirdPartyPlateInquiry(inquirySubmission);
|
: await this.getThirdPartyPlateInquiry(inquirySubmission);
|
||||||
|
thirdPartyInquiry = inquiry;
|
||||||
sandHubReport = inquiry.mapped;
|
sandHubReport = inquiry.mapped;
|
||||||
this.recordPartyCaseInquiryStatus(
|
this.recordPartyCaseInquiryStatus(
|
||||||
req,
|
req,
|
||||||
@@ -6907,9 +6969,25 @@ export class RequestManagementService {
|
|||||||
)
|
)
|
||||||
: await this.clientService.findOne({ clientName });
|
: await this.clientService.findOne({ clientName });
|
||||||
if (!client) {
|
if (!client) {
|
||||||
throw new NotFoundException(
|
const error = new NotFoundException(
|
||||||
`Client not found for company: ${clientName}`,
|
`Client not found for company: ${clientName}`,
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
PartyRole.FIRST,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: thirdPartyInquiry?.offline?.source ?? "TEJARAT_BLOCK_INQUIRY",
|
||||||
|
plateKind: thirdPartyInquiry?.plateKind,
|
||||||
|
attempts: thirdPartyInquiry?.attempts,
|
||||||
|
raw: thirdPartyInquiry?.raw,
|
||||||
|
mapped: thirdPartyInquiry?.mapped ?? sandHubReport,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
let carBodyInquiry: any;
|
let carBodyInquiry: any;
|
||||||
@@ -7223,9 +7301,25 @@ export class RequestManagementService {
|
|||||||
: await this.clientService.findOne({ clientName })
|
: await this.clientService.findOne({ clientName })
|
||||||
: null;
|
: null;
|
||||||
if (!client && !policyholderUnknown) {
|
if (!client && !policyholderUnknown) {
|
||||||
throw new NotFoundException(
|
const error = new NotFoundException(
|
||||||
`Client not found for company: ${clientName}`,
|
`Client not found for company: ${clientName}`,
|
||||||
);
|
);
|
||||||
|
this.recordPartyCaseInquiryStatus(
|
||||||
|
req,
|
||||||
|
"thirdParty",
|
||||||
|
role,
|
||||||
|
false,
|
||||||
|
{
|
||||||
|
source: inquiry.offline?.source ?? "TEJARAT_BLOCK_INQUIRY",
|
||||||
|
plateKind: inquiry.plateKind,
|
||||||
|
attempts: inquiry.attempts,
|
||||||
|
raw: inquiry.raw,
|
||||||
|
mapped: inquiry.mapped,
|
||||||
|
},
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await this.persistBlameInquiryAudit(req);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
const resolvedClientId =
|
const resolvedClientId =
|
||||||
(client as any)?._id ?? (client as any)?._doc?._id;
|
(client as any)?._id ?? (client as any)?._doc?._id;
|
||||||
@@ -7965,9 +8059,20 @@ export class RequestManagementService {
|
|||||||
: await this.clientService.findOne({ clientName: clientName });
|
: await this.clientService.findOne({ clientName: clientName });
|
||||||
|
|
||||||
if (!client) {
|
if (!client) {
|
||||||
throw new NotFoundException(
|
const error = new NotFoundException(
|
||||||
`Client not found for company: ${clientName}`,
|
`Client not found for company: ${clientName}`,
|
||||||
);
|
);
|
||||||
|
await this.persistLegacyInquiryAudit(
|
||||||
|
requestId,
|
||||||
|
"firstPartyDetails",
|
||||||
|
firstInquirySubmission,
|
||||||
|
{
|
||||||
|
...(firstPolicyInquiry ?? {}),
|
||||||
|
failed: true,
|
||||||
|
error: this.normalizeInquiryError(error),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add first party plate and related data to the existing firstPartyDetails object
|
// Add first party plate and related data to the existing firstPartyDetails object
|
||||||
@@ -8092,9 +8197,20 @@ export class RequestManagementService {
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (!client && !policyholderUnknown) {
|
if (!client && !policyholderUnknown) {
|
||||||
throw new NotFoundException(
|
const error = new NotFoundException(
|
||||||
`Client not found for company: ${clientName}${companyCode ? ` (code: ${companyCode})` : ""}`,
|
`Client not found for company: ${clientName}${companyCode ? ` (code: ${companyCode})` : ""}`,
|
||||||
);
|
);
|
||||||
|
await this.persistLegacyInquiryAudit(
|
||||||
|
requestId,
|
||||||
|
"secondPartyDetails",
|
||||||
|
secondInquirySubmission,
|
||||||
|
{
|
||||||
|
...(secondPolicyInquiry ?? {}),
|
||||||
|
failed: true,
|
||||||
|
error: this.normalizeInquiryError(error),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add second party plate and related data to the existing secondPartyDetails object
|
// Add second party plate and related data to the existing secondPartyDetails object
|
||||||
@@ -8423,9 +8539,20 @@ export class RequestManagementService {
|
|||||||
: await this.clientService.findOne({ clientName: clientName });
|
: await this.clientService.findOne({ clientName: clientName });
|
||||||
|
|
||||||
if (!client) {
|
if (!client) {
|
||||||
throw new NotFoundException(
|
const error = new NotFoundException(
|
||||||
`Client not found for company: ${clientName}`,
|
`Client not found for company: ${clientName}`,
|
||||||
);
|
);
|
||||||
|
await this.persistLegacyInquiryAudit(
|
||||||
|
requestId,
|
||||||
|
"firstPartyDetails",
|
||||||
|
firstInquirySubmission,
|
||||||
|
{
|
||||||
|
thirdParty: thirdPartyPolicyInquiry,
|
||||||
|
failed: true,
|
||||||
|
error: this.normalizeInquiryError(error),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add first party plate and related data to the existing firstPartyDetails object
|
// Add first party plate and related data to the existing firstPartyDetails object
|
||||||
|
|||||||
Reference in New Issue
Block a user