New filters - addedBy and date range

This commit is contained in:
Selim Mustafaev 2020-09-26 22:08:41 +03:00
parent ef3f54c489
commit e2a4c9c30f
3 changed files with 39 additions and 5 deletions

View File

@ -71,8 +71,10 @@ router.put('/', async (req, res) => {
}); });
router.get('/', async (req, res) => { router.get('/', async (req, res) => {
const { email } = req.user;
try { try {
let finalQuery = Utils.makeVehiclesSearchQuery(req.query); let finalQuery = Utils.makeVehiclesSearchQuery(req.query, email);
let collection = req.db.collection('vehicles'); let collection = req.db.collection('vehicles');
let vehicles = await collection.find(finalQuery, { number: 1, events: 1 }).toArray(); let vehicles = await collection.find(finalQuery, { number: 1, events: 1 }).toArray();
let events = []; let events = [];

View File

@ -64,9 +64,10 @@ router.post('/check', async (req, res) => {
router.get('/', async (req, res) => { router.get('/', async (req, res) => {
const { limit } = req.query; const { limit } = req.query;
const { email } = req.user;
try { try {
let finalQuery = Utils.makeVehiclesSearchQuery(req.query); let finalQuery = Utils.makeVehiclesSearchQuery(req.query, email);
let collection = req.db.collection('vehicles'); let collection = req.db.collection('vehicles');
let vehicles = await collection.find(finalQuery).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 });

View File

@ -1,6 +1,6 @@
class Utils { class Utils {
static makeVehiclesSearchQuery(queryParams) { static makeVehiclesSearchQuery(queryParams, email) {
const { query, brand, model, color, regions } = queryParams; const { query, brand, model, color, regions, fromDate, toDate, addedBy } = queryParams;
let numberQuery = Utils.makeNumberQuery(query, regions?.split(',') ?? []); let numberQuery = Utils.makeNumberQuery(query, regions?.split(',') ?? []);
let findQuery = { let findQuery = {
@ -9,7 +9,26 @@ class Utils {
color color
}; };
if(fromDate || toDate) {
findQuery.addedDate = {};
if(fromDate) {
findQuery.addedDate.$gte = fromDate*1000;
}
if(toDate) {
findQuery.addedDate.$lte = toDate*1000;
}
}
if(addedBy) {
if(addedBy == 'me') {
findQuery.addedBy = email;
} else if(addedBy == 'anyoneButMe') {
findQuery.addedBy = { $ne: email };
}
}
let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val )); let findQueryFiltered = Object.fromEntries(Object.entries(findQuery).filter(([,val]) => val ));
console.dir(findQueryFiltered);
return { ...findQueryFiltered, ...numberQuery }; return { ...findQueryFiltered, ...numberQuery };
} }
@ -28,6 +47,18 @@ class Utils {
return {}; return {};
} }
} }
static makeDateQuery(from, to) {
let conditions = [];
if(from) {
conditions.push({ $gte: from });
}
if(to) {
conditions.push({ $lte: to });
}
return { $and: conditions };
}
} }
module.exports = Utils; module.exports = Utils;