From c89ce6071c9a96a4631df51eedae12c679c89a60 Mon Sep 17 00:00:00 2001 From: Selim Mustafaev Date: Mon, 9 Jun 2025 18:15:33 +0300 Subject: [PATCH] Checking vin number --- data_providers/avtocod.js | 7 ++++--- data_providers/vin01.js | 11 +++++++---- models/vehicle.js | 9 ++++++++- routes/vehicles.js | 18 ++++++++++++++---- 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/data_providers/avtocod.js b/data_providers/avtocod.js index 7c5ab7b..4c4a80b 100644 --- a/data_providers/avtocod.js +++ b/data_providers/avtocod.js @@ -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); diff --git a/data_providers/vin01.js b/data_providers/vin01.js index 9177627..0592618 100644 --- a/data_providers/vin01.js +++ b/data_providers/vin01.js @@ -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 = { diff --git a/models/vehicle.js b/models/vehicle.js index b9c5320..f73edab 100644 --- a/models/vehicle.js +++ b/models/vehicle.js @@ -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; } diff --git a/routes/vehicles.js b/routes/vehicles.js index 35e3d07..75acb6e 100644 --- a/routes/vehicles.js +++ b/routes/vehicles.js @@ -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 });