PIbd-32_Kashin_M.I_Mobile/server/router.js

63 lines
1.9 KiB
JavaScript
Raw Normal View History

const data = require('./data.json');
module.exports = (req, res, next) => {
if (req.url.startsWith('/search') && req.method === 'GET') {
try {
const searchText = req.query.name;
const searched = data.products.filter(
(product) =>
(product.name.toLowerCase()).includes(searchText.toLowerCase())
);
return res.json(searched);
} catch (error) {
console.error('Error loading data:', error);
res.status(500).json({ message: 'Internal Server Error' });
}
} else if (req.url.startsWith('/report') && req.method === 'GET') {
try {
// Добавляем фильтрацию по полю dateTime
const fromDate = req.query.fromDate;
const toDate = req.query.toDate;
const filteredData = filterByDateTime(data.items, fromDate, toDate);
// Возвращаем отфильтрованные элементы
const reportData = generateReport(filteredData);
res.json(reportData);
} catch (error) {
console.error('Error loading data:', error);
return res.status(500).json({ message: 'Internal Server Error' });
}
} else {
next();
}
};
// Функция generateReport для примера
function generateReport(items) {
// Ваш код для генерации отчета
return items.map((item) => ({
id: item.id,
dateTime: item.dateTime,
weight: item.weight,
radius: item.radius,
maxCount: item.maxCount,
bikeId: item.bikeId
// Другие поля отчета, которые вам нужны
}));
}
// Функция для фильтрации по полю dateTime
function filterByDateTime(items, fromDate, toDate) {
if (!fromDate && !toDate) {
return items;
}
const filteredItems = items.filter((item) => {
const itemDate = item.dateTime;
return (!fromDate || itemDate >= fromDate) && (!toDate || itemDate <= toDate);
});
return filteredItems;
}