У меня есть несколько проверок на дублирование, которые работают нормально в 99% случаев. в чем может быть проблема?
Сначала я подумал, что это может быть время, необходимое для ответа от моего API регистрации.
Я пробовал использовать другие проверки, такие как идентификатор преимущества, который уникален и должен предотвращать дублирование.
Могу ли я получить некоторую помощь или рекомендации по этому поводу, пожалуйста.
Пожалуйста, проверьте код:
Код: Выделить всё
let benefitsDetails = bh.input.benefit;
let caseData = bh.input.caseData;
function getCurrentDate(): string {
const options: Intl.DateTimeFormatOptions = {
day: '2-digit',
month: '2-digit',
year: 'numeric'
};
const formatter = new Intl.DateTimeFormat('en-US', options);
const currentDate = new Date();
const formattedDateTime = formatter.format(currentDate);
return formattedDateTime;
}
bh.local.duplicateCheckBody = {
'pageSize': 100,
'pageNumber': 0
};
let enquFieldObj = {};
bh.benefit = "";
if (benefitsDetails?.benefitType == "CashBack") {
enquFieldObj['field1'] = bh.input?.policyIdNumber.toString();
bh.benefit = "CashBack"
} else {
enquFieldObj['field1'] = bh.input?.policyIdNumber.toString(); //policyID
enquFieldObj['field4'] = getCurrentDate(); //date
}
enquFieldObj['field2'] = (benefitsDetails as { benefitType?: string })?.benefitType; //benefitType
enquFieldObj['field3'] = (benefitsDetails as { benefitId?: number })?.benefitId?.toString(); //benefitID
bh.local.duplicateCheckBody.enquiryFields = enquFieldObj;
bh.local.duplicateCheckBody.enquiryFields.field2 = enquFieldObj['field2'];
bh.local.duplicateCheckBody.enquiryFields.field3 = enquFieldObj?.['field3'];
bh.local.duplicateCheck = {
'benefitType': bh.local.duplicateCheckBody?.enquiryFields?.field2,
'benefitId': bh.local.duplicateCheckBody?.enquiryFields?.field3?.toString(),
'duplicateStatus': undefined,
}
bh.local.duplciateCheckURL = `${process.env.BASE_URL}${process.env.DUPLICATE_CASE_END_POINT}`;
Код: Выделить всё
bh.local.duplicateCheck.duplicateStatus = false
bh.sameDateError = false
if (bh.local.duplicateCheckResponse.payload.length) {
bh.local.duplicateCheck.duplicateStatus = true
};
if (bh.benefit === 'CashBack') {
bh.local?.duplicateCheckResponse?.payload.sort((a: any, b: any) => {
const dateA = new Date(a.caseData?.data?.Date);
const dateB = new Date(b.caseData?.data?.Date);
return dateB.getTime() - dateA.getTime();
});
let taskStage = bh.local?.duplicateCheckResponse?.payload[0]?.caseData?.data?.searchKeys?.taskStage;
bh.createdDate = bh.local?.duplicateCheckResponse?.payload[0]?.caseData?.data?.Date
const today = new Date();
const currentDate = `${(today.getMonth() + 1).toString().padStart(2, '0')}/${today.getDate().toString().padStart(2, '0')}/${today.getFullYear()}`;
if (currentDate == bh.createdDate) {
bh.sameDateError = true;
}
if (!bh.local?.duplicateCheckResponse?.payload?.length || taskStage == 'Paid' && !bh.sameDateError) {
bh.local.duplicateCheck.duplicateStatus = false;
} else if (taskStage !== 'Paid' && !bh.sameDateError) {
bh.CashBackTaskError = 'Previous CashBack claim is not paid'
bh.local.duplicateCheck.duplicateStatus = true;
} else if (taskStage == 'Paid' && bh.sameDateError) {
bh.local.duplicateCheck.duplicateStatus = true
bh.CashBackTaskError = 'A claim has already been registered with the provided details.'
}
let errorCheck = {
sameDate: bh.sameDateError,
taskStage: taskStage,
CashBackTaskError: bh.CashBackTaskError || '',
benefit: bh.benefit
}
bh.local.duplicateCheck.errorCheck = errorCheck;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ries-in-db
Мобильная версия