Filtering by regions
This commit is contained in:
parent
c493af392c
commit
55e715dbd5
@ -166,6 +166,95 @@ const typeOperation = {
|
|||||||
'98':'учет отмены приостановления действия права управления ТС по постановлению судебного пристава-исполнителя о временном ограничении на пользование должников специальным правом'
|
'98':'учет отмены приостановления действия права управления ТС по постановлению судебного пристава-исполнителя о временном ограничении на пользование должников специальным правом'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const regions = [
|
||||||
|
{ name: 'Республика Адыгея', codes: [1]},
|
||||||
|
{ name: 'Республика Башкортостан', codes: [2, 102, 702]},
|
||||||
|
{ name: 'Республика Бурятия', codes: [3]},
|
||||||
|
{ name: 'Республика Алтай', codes: [4]},
|
||||||
|
{ name: 'Республика Дагестан', codes: [5]},
|
||||||
|
{ name: 'Республика Ингушетия', codes: [6]},
|
||||||
|
{ name: 'Кабардино-Балкарская Республика', codes: [7]},
|
||||||
|
{ name: 'Республика Калмыкия', codes: [8]},
|
||||||
|
{ name: 'Республика Карачаево-Черкесия', codes: [9]},
|
||||||
|
{ name: 'Республика Карелия', codes: [10]},
|
||||||
|
{ name: 'Республика Коми', codes: [11]},
|
||||||
|
{ name: 'Республика Марий Эл', codes: [12]},
|
||||||
|
{ name: 'Республика Мордовия', codes: [13, 113]},
|
||||||
|
{ name: 'Республика Саха (Якутия)', codes: [14]},
|
||||||
|
{ name: 'Республика Северная Осетия — Алания', codes: [15]},
|
||||||
|
{ name: 'Республика Татарстан', codes: [16, 116, 716]},
|
||||||
|
{ name: 'Республика Тыва', codes: [17]},
|
||||||
|
{ name: 'Удмуртская Республика', codes: [18]},
|
||||||
|
{ name: 'Республика Хакасия', codes: [19]},
|
||||||
|
{ name: 'Чувашская Республика', codes: [21, 121]},
|
||||||
|
{ name: 'Алтайский край', codes: [22, 122]},
|
||||||
|
{ name: 'Краснодарский край', codes: [23, 93, 123, 193]},
|
||||||
|
{ name: 'Красноярский край', codes: [24, 84, 88, 124]},
|
||||||
|
{ name: 'Приморский край', codes: [25, 125]},
|
||||||
|
{ name: 'Ставропольский край', codes: [26, 126]},
|
||||||
|
{ name: 'Хабаровский край', codes: [27, 127]},
|
||||||
|
{ name: 'Амурская область', codes: [28]},
|
||||||
|
{ name: 'Архангельская область', codes: [29]},
|
||||||
|
{ name: 'Астраханская область', codes: [30]},
|
||||||
|
{ name: 'Белгородская область', codes: [31]},
|
||||||
|
{ name: 'Брянская область', codes: [32]},
|
||||||
|
{ name: 'Владимирская область', codes: [33]},
|
||||||
|
{ name: 'Волгоградская область', codes: [34, 134]},
|
||||||
|
{ name: 'Вологодская область', codes: [35]},
|
||||||
|
{ name: 'Воронежская область', codes: [36, 136]},
|
||||||
|
{ name: 'Ивановская область', codes: [37]},
|
||||||
|
{ name: 'Иркутская область', codes: [38, 85, 138]},
|
||||||
|
{ name: 'Калининградская область', codes: [39, 91]},
|
||||||
|
{ name: 'Калужская область', codes: [40]},
|
||||||
|
{ name: 'Камчатский край', codes: [41]},
|
||||||
|
{ name: 'Кемеровская область', codes: [42, 142]},
|
||||||
|
{ name: 'Кировская область', codes: [43]},
|
||||||
|
{ name: 'Костромская область', codes: [44]},
|
||||||
|
{ name: 'Курганская область', codes: [45]},
|
||||||
|
{ name: 'Курская область', codes: [46]},
|
||||||
|
{ name: 'Ленинградская область', codes: [47, 147]},
|
||||||
|
{ name: 'Липецкая область', codes: [48]},
|
||||||
|
{ name: 'Магаданская область', codes: [49]},
|
||||||
|
{ name: 'Московская область', codes: [50, 90, 150, 190, 750, 790]},
|
||||||
|
{ name: 'Мурманская область', codes: [51]},
|
||||||
|
{ name: 'Нижегородская область', codes: [52, 152]},
|
||||||
|
{ name: 'Новгородская область', codes: [53]},
|
||||||
|
{ name: 'Новосибирская область', codes: [54, 154]},
|
||||||
|
{ name: 'Омская область', codes: [55]},
|
||||||
|
{ name: 'Оренбургская область', codes: [56]},
|
||||||
|
{ name: 'Орловская область', codes: [57]},
|
||||||
|
{ name: 'Пензенская область', codes: [58]},
|
||||||
|
{ name: 'Пермский край', codes: [59, 81, 159]},
|
||||||
|
{ name: 'Псковская область', codes: [60]},
|
||||||
|
{ name: 'Ростовская область', codes: [61, 161, 761]},
|
||||||
|
{ name: 'Рязанская область', codes: [62]},
|
||||||
|
{ name: 'Самарская область', codes: [63, 163, 763]},
|
||||||
|
{ name: 'Саратовская область', codes: [64, 164]},
|
||||||
|
{ name: 'Сахалинская область', codes: [65]},
|
||||||
|
{ name: 'Свердловская область', codes: [66, 96, 196]},
|
||||||
|
{ name: 'Смоленская область', codes: [67]},
|
||||||
|
{ name: 'Тамбовская область', codes: [68]},
|
||||||
|
{ name: 'Тверская область', codes: [69, 169]},
|
||||||
|
{ name: 'Томская область', codes: [70]},
|
||||||
|
{ name: 'Тульская область', codes: [71]},
|
||||||
|
{ name: 'Тюменская область', codes: [72]},
|
||||||
|
{ name: 'Ульяновская область', codes: [73, 173]},
|
||||||
|
{ name: 'Челябинская область', codes: [74, 174]},
|
||||||
|
{ name: 'Забайкальский край', codes: [75, 80]},
|
||||||
|
{ name: 'Ярославская область', codes: [76]},
|
||||||
|
{ name: 'Москва', codes: [77, 97, 99, 177, 199, 197, 777, 797, 799]},
|
||||||
|
{ name: 'Санкт-Петербург', codes: [78, 98, 178, 198]},
|
||||||
|
{ name: 'Еврейская автономная область', codes: [79]},
|
||||||
|
{ name: 'Республика Крым', codes: [82]},
|
||||||
|
{ name: 'Ненецкий автономный округ', codes: [83]},
|
||||||
|
{ name: 'Ханты-Мансийский автономный округ Югра', codes: [86, 186]},
|
||||||
|
{ name: 'Чукотский автономный округ', codes: [87]},
|
||||||
|
{ name: 'Ямало-Ненецкий автономный округ', codes: [89]},
|
||||||
|
{ name: 'Севастополь', codes: [92]},
|
||||||
|
{ name: 'Байконур', codes: [94]},
|
||||||
|
{ name: 'Чеченская республика', codes: [20, 95]},
|
||||||
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
organs, ogr, typeAuto, typeOperation
|
organs, ogr, typeAuto, typeOperation, regions
|
||||||
};
|
};
|
||||||
@ -4,9 +4,26 @@ const jwt = require('jsonwebtoken');
|
|||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
const AvtocodProvider = require('../data_providers/avtocod');
|
const AvtocodProvider = require('../data_providers/avtocod');
|
||||||
const Vin01Provider = require('../data_providers/vin01');
|
const Vin01Provider = require('../data_providers/vin01');
|
||||||
|
const { regions } = require('../data_providers/constants');
|
||||||
|
|
||||||
const makeError = error => ({ success: false, error });
|
const makeError = error => ({ success: false, error });
|
||||||
|
|
||||||
|
function makeNumberQuery(number, regions) {
|
||||||
|
let regionsQuery = null;
|
||||||
|
if(regions.length > 0) {
|
||||||
|
regionsQuery = { $or: regions.map(r => { return { number: { $regex: `\\D${r}$` } }; }) };
|
||||||
|
}
|
||||||
|
if(number && regionsQuery) {
|
||||||
|
return { $and: [ { number: { $regex: number } }, regionsQuery ] };
|
||||||
|
} else if(number) {
|
||||||
|
return { number: { $regex: number } };
|
||||||
|
} else if(regionsQuery) {
|
||||||
|
return regionsQuery;
|
||||||
|
} else {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
router.post('/check', async (req, res) => {
|
router.post('/check', async (req, res) => {
|
||||||
const number = req.body.number.replace(/ /g, '').toUpperCase();
|
const number = req.body.number.replace(/ /g, '').toUpperCase();
|
||||||
const googleIdToken = req.body.googleIdToken;
|
const googleIdToken = req.body.googleIdToken;
|
||||||
@ -55,19 +72,21 @@ router.post('/check', async (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
router.get('/', async (req, res) => {
|
router.get('/', async (req, res) => {
|
||||||
const { limit, query, brand, model, color } = req.query;
|
const { limit, query, brand, model, color, regions } = req.query;
|
||||||
|
|
||||||
|
let numberQuery = makeNumberQuery(query, regions?.split(',') ?? []);
|
||||||
let findQuery = {
|
let findQuery = {
|
||||||
number: query,
|
|
||||||
'brand.name.normalized': brand,
|
'brand.name.normalized': brand,
|
||||||
'model.name.normalized': model,
|
'model.name.normalized': model,
|
||||||
color
|
color
|
||||||
};
|
};
|
||||||
|
|
||||||
let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val ));
|
let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val ));
|
||||||
|
let finalQuery = { ...findQueryFiltered, ...numberQuery };
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let collection = req.db.collection('vehicles');
|
let collection = req.db.collection('vehicles');
|
||||||
let vehicles = await collection.find(findQueryFiltered).sort({ addedDate: -1 }).limit(parseInt(limit ?? 0)).toArray();
|
let vehicles = await collection.find(finalQuery).sort({ addedDate: -1 }).limit(parseInt(limit ?? 0)).toArray();
|
||||||
res.send({ success: true, data: vehicles });
|
res.send({ success: true, data: vehicles });
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
res.send(makeError('Error reading vehicles from DB'));
|
res.send(makeError('Error reading vehicles from DB'));
|
||||||
@ -109,6 +128,10 @@ router.get('/colors', async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.get('/regions', (req, res) => {
|
||||||
|
res.send({ success: true, data: regions });
|
||||||
|
});
|
||||||
|
|
||||||
router.get('/shared_report', cors({ origin: 'https://auto.aliencat.pro' }), async (req, res) => {
|
router.get('/shared_report', cors({ origin: 'https://auto.aliencat.pro' }), async (req, res) => {
|
||||||
try {
|
try {
|
||||||
let { plateNumber } = jwt.verify(req.query.token, '#TheTruthIsOutThere');
|
let { plateNumber } = jwt.verify(req.query.token, '#TheTruthIsOutThere');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user