const fs = require('fs'); const path = require('path'); module.exports = (req, res, next) => { const data = JSON.parse(fs.readFileSync(path.join(__dirname, 'data.json'), 'utf8')); if (req.url.startsWith('/search') && req.method === 'GET') { try { const searchText = req.query.name; const searched = data.pets.filter( (pet) => pet.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 { // Добавляем фильтрацию по дате рождения const fromDate = req.query.fromDate; const toDate = req.query.toDate; const filteredData = filterByBirthday(data.pets, 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 для создания отчета с id function generateReport(pets) { return pets.map((pet, index) => ({ reportId: index + 1, // Уникальный id отчета (можете использовать другую логику) petid: pet.id, petname: pet.name, birthday: pet.birthday, userid: pet.userId, login: getUserLogin(pet.userId) })); } // Функция для фильтрации по дате рождения function filterByBirthday(pets, fromDate, toDate) { if (!fromDate && !toDate) { return pets; } const filteredPets = pets.filter((pet) => { const petBirthday = parseDate(pet.birthday); return (!fromDate || petBirthday >= parseDate(fromDate)) && (!toDate || petBirthday <= parseDate(toDate)); }); return filteredPets; } // Функция для парсинга даты из строки в формате "dd.MM.yyyy" function parseDate(dateString) { const [day, month, year] = dateString.split('.').map(Number); return new Date(year, month - 1, day); } // Функция для получения логина пользователя по userId function getUserLogin(userId) { const data = JSON.parse(fs.readFileSync(path.join(__dirname, 'data.json'), 'utf8')); const user = data.users.find((user) => user.id === userId); return user ? user.login : 'Unknown'; }