parsing osago contracts from GB provider
This commit is contained in:
parent
53b9ce193d
commit
9ea088e3f4
@ -59,23 +59,51 @@ class TGProvider {
|
||||
}
|
||||
}
|
||||
|
||||
parseReport(text) {
|
||||
let number = this.findFirst(text, /Номер: (.*)\n/);
|
||||
let vin = this.findFirst(text, /VIN: (.*)\n/);
|
||||
let owner = this.findFirst(text, /Владелец: (.*)\n/);
|
||||
let year = this.findFirst(text, /Год: (.*)\n/);
|
||||
let color = this.findFirst(text, /Цвет: (.*)\n/);
|
||||
let sts = this.findFirst(text, /СТС: (.*)\n/);
|
||||
|
||||
parseBlock(text) {
|
||||
return {
|
||||
number,
|
||||
vin,
|
||||
owner,
|
||||
year,
|
||||
color,
|
||||
sts
|
||||
name: this.findFirst(text, /📋 (.*)\n/),
|
||||
vin: this.findFirst(text, /VIN: (.*)\n/),
|
||||
plateNumber: this.findFirst(text, /Гос номер: (.*)\n/),
|
||||
year: this.findFirst(text, /Год: (.*)\n/),
|
||||
color: this.findFirst(text, /Цвет: (.*)\n/),
|
||||
sts: this.findFirst(text, /СТС: (.*)\n/),
|
||||
stsDate: this.findFirst(text, /Дата СТС: (.*)\n/),
|
||||
owner: this.findFirst(text, /Владелец: (.*)\n/),
|
||||
kbm: this.findFirst(text, /КБМ: (.*)\n/),
|
||||
usageRegion: this.findFirst(text, /Регион: (.*)\n/),
|
||||
status: this.findFirst(text, /Статус: (.*)\n/),
|
||||
insurant: this.findFirst(text, /Страхователь: (.*)\n/),
|
||||
birthday: this.findFirst(text, /День рождения: (.*)\n/),
|
||||
number: this.findFirst(text, /Полис: (.*)\n/),
|
||||
};
|
||||
}
|
||||
|
||||
parseReport(text) {
|
||||
|
||||
let result = text.match(/📋((?:.|\n)*?)^\n/gmu);
|
||||
if(result && result.length > 0) {
|
||||
|
||||
let generalInfo = null;
|
||||
let insurance = null;
|
||||
|
||||
for(let item of result) {
|
||||
let block = Utils.removeNullFields(this.parseBlock(item));
|
||||
if(block.sts) {
|
||||
generalInfo = block;
|
||||
} else if(block.number) {
|
||||
insurance = block;
|
||||
insurance.date = Math.floor(Date.now() / 1000);
|
||||
insurance.restrictions = '';
|
||||
}
|
||||
}
|
||||
|
||||
if(generalInfo || insurance) {
|
||||
return { generalInfo, insurance };
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export { TGProvider };
|
||||
|
||||
@ -296,22 +296,38 @@ router.post('/checkGbTg', async (req, res) => {
|
||||
let report = await tgProvider.getReport(number);
|
||||
await tgProvider.close();
|
||||
|
||||
if(!report.generalInfo && !report.insurance) {
|
||||
res.send(makeError('No data found'));
|
||||
return;
|
||||
}
|
||||
|
||||
let collection = req.db.collection('vehicles');
|
||||
let vehicle = await collection.findOne({ number });
|
||||
|
||||
if(vehicle) {
|
||||
let vinRegex = RegExp(vehicle.vin1.replace(/\*/g, '.'));
|
||||
//let stsRegex = RegExp(vehicle.sts.replace(/\*/g, '.'));
|
||||
|
||||
if(report.vin.match(vinRegex) /*&& report.sts.match(stsRegex)*/) {
|
||||
if(report.generalInfo.vin.match(vinRegex)) {
|
||||
let updatedFields = {
|
||||
vin1: report.vin,
|
||||
color: report.color,
|
||||
sts: report.sts,
|
||||
vin1: report.generalInfo.vin,
|
||||
color: report.generalInfo.color,
|
||||
sts: report.generalInfo.sts,
|
||||
updatedDate: Date.now()
|
||||
};
|
||||
|
||||
console.log('insurance: ', report.insurance);
|
||||
if(report.insurance) {
|
||||
let osagoFound = vehicle.osagoContracts?.some(elem => {
|
||||
return elem.number = report.insurance.number;
|
||||
}) ?? false;
|
||||
console.log('osago found: ', osagoFound);
|
||||
if(!osagoFound) {
|
||||
await collection.updateOne({ number }, { $push: { osagoContracts: report.insurance } });
|
||||
}
|
||||
}
|
||||
|
||||
await collection.updateOne({ number }, { $set: updatedFields });
|
||||
vehicle = await collection.findOne({ number });
|
||||
res.send({ success: true, data: Object.assign(vehicle, updatedFields) });
|
||||
} else {
|
||||
res.send(makeError('Vehicle doesn\'t match'));
|
||||
|
||||
@ -142,6 +142,10 @@ class Utils {
|
||||
});
|
||||
return { promise, resolve, reject };
|
||||
}
|
||||
|
||||
static removeNullFields(obj) {
|
||||
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));
|
||||
}
|
||||
}
|
||||
|
||||
export default Utils;
|
||||
Loading…
Reference in New Issue
Block a user