Checking vin number

This commit is contained in:
Selim Mustafaev 2025-06-09 18:15:33 +03:00
parent 0400944316
commit c89ce6071c
4 changed files with 33 additions and 12 deletions

View File

@ -191,7 +191,7 @@ function waitForReport(centrifugoConfig, channel) {
} else {
reject(new Error('Request to avtocod timed out'));
}
}, 15000);
}, 20000);
const sub = centrifuge.newSubscription(channel);
@ -211,9 +211,10 @@ function waitForReport(centrifugoConfig, channel) {
}
class AvtocodProvider {
static async getReport(number) {
static async getReport(number, type) {
try {
let url = `${baseUrl}/auto/generate?number=${encodeURIComponent(number)}&device_token=${deviceToken}&type=GRZ`;
let numberType = type ?? 'GRZ';
let url = `${baseUrl}/auto/generate?number=${encodeURIComponent(number)}&device_token=${deviceToken}&type=${numberType}`;
let resp = await getJson(url);
let html = await getPage(resp.report_uri);

View File

@ -56,11 +56,14 @@ class Vin01Provider {
}
}
static async getReport(number, token) {
static async getReport(number, token, type) {
try {
let vin = await Vin01Provider.getVin(number, token);
console.log('vin01 found VIN: ', vin);
return await this.getReportVin(vin, number, token);
let vin = number;
if(type != 'VIN') {
vin = await Vin01Provider.getVin(number, token);
console.log('vin01 found VIN: ', vin);
}
return await this.getReportVin(vin, type == 'GRZ' ? number : '', token);
} catch(ex) {
console.log('Vin01 error: ', ex.message);
ex.debugInfo = {

View File

@ -1,3 +1,4 @@
import { query } from 'express';
import Constants from '../data_providers/constants.js';
import Utils from '../utils/utils.js';
import DebugInfo from './DebugInfo.js';
@ -39,7 +40,6 @@ class Vehicle {
v.engine = { number: e.number, volume: e.volume, powerHp: e.power?.hp, powerKw: e.power?.kw, fuelType: e.fuel?.type };
v.model = tech.model ? { name: tech.model.name } : null;
v.year = tech.year;
v.number = report.identifiers_query.query;
v.currentNumber = report.fields.identifiers.vehicle.reg_num;
v.pts = report.fields.identifiers.vehicle.pts;
v.sts = report.fields.identifiers.vehicle.sts;
@ -68,6 +68,13 @@ class Vehicle {
v.osagoContracts = [];
v.debugInfo = { autocod: new DebugInfo() };
let queryType = report.identifiers_query.queryType;
if(queryType == 'GRZ') {
v.number = report.identifiers_query.query;
} else {
v.number = report.fields.identifiers.vehicle.reg_num;
}
return v;
}

View File

@ -18,6 +18,7 @@ const makeError = (error) => ({ success: false, error });
router.post('/check', async (req, res) => {
const number = req.body.number.replace(/ /g, '').toUpperCase();
const type = req.body.type;
const { googleIdToken, forceUpdate, notes, events } = req.body;
const { email } = req.user;
@ -53,11 +54,11 @@ router.post('/check', async (req, res) => {
res.send({ success: true, data: vehicles[0] });
} else {
try {
let autocodPromise = AvtocodProvider.getReport(number);
let autocodPromise = AvtocodProvider.getReport(number, type);
let all = [autocodPromise];
if (googleIdToken) {
let vin01Promise = Vin01Provider.getReport(number, googleIdToken);
let vin01Promise = Vin01Provider.getReport(number, googleIdToken, type);
all.push(vin01Promise);
} else {
all.push(
@ -71,7 +72,13 @@ router.post('/check', async (req, res) => {
);
}
all.push(NomerogramProvider.getGroups(number));
if(type == 'GRZ') {
all.push(NomerogramProvider.getGroups(number));
} else {
let error = Error();
error.debugInfo = DebugInfo.fromError('not relevant');
all.push(Promise.reject(error));
}
let [autocod, vin01, nomerogram] = await Promise.allSettled(all);
@ -142,7 +149,10 @@ router.post('/check', async (req, res) => {
vehicle.mergeEvents(events);
}
await collection.replaceOne({ number }, vehicle, { upsert: true });
if(type == 'GRZ') {
await collection.replaceOne({ number }, vehicle, { upsert: true });
}
await Utils.vehicleRemoveEventEmails(vehicle, req);
res.status(201).send({ success: true, data: vehicle });