Add queries to dogsitter-viewing #104
@ -68,4 +68,161 @@ router.get("/auth/session", (request, response) => {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Проверка взаимодействия между пользователем и догситтером
 | 
				
			||||||
 | 
					router.get("/interactions/check", (req, res) => {
 | 
				
			||||||
 | 
					  const { owner_id, dogsitter_id } = req.query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usersFilePath = path.resolve(__dirname, "../json/users/success.json");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete require.cache[require.resolve(usersFilePath)];
 | 
				
			||||||
 | 
					  const usersFile = require(usersFilePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const interactions = usersFile.interactions || [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const exists = interactions.some(
 | 
				
			||||||
 | 
					    (interaction) =>
 | 
				
			||||||
 | 
					      interaction.owner_id === Number(owner_id) &&
 | 
				
			||||||
 | 
					      interaction.dogsitter_id === Number(dogsitter_id)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res.json({ exists });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Добавление нового взаимодействия
 | 
				
			||||||
 | 
					router.post("/interactions", (req, res) => {
 | 
				
			||||||
 | 
					  const { owner_id, dogsitter_id, interaction_type } = req.body;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!owner_id || !dogsitter_id || !interaction_type) {
 | 
				
			||||||
 | 
					    return res.status(400).json({ error: "Missing required fields" });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usersFilePath = path.resolve(__dirname, "../json/users/success.json");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete require.cache[require.resolve(usersFilePath)];
 | 
				
			||||||
 | 
					  const usersFile = require(usersFilePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!usersFile.interactions) {
 | 
				
			||||||
 | 
					    usersFile.interactions = [];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Проверяем, существует ли уже такое взаимодействие
 | 
				
			||||||
 | 
					  const exists = usersFile.interactions.some(
 | 
				
			||||||
 | 
					    (interaction) =>
 | 
				
			||||||
 | 
					      interaction.owner_id === Number(owner_id) &&
 | 
				
			||||||
 | 
					      interaction.dogsitter_id === Number(dogsitter_id)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!exists) {
 | 
				
			||||||
 | 
					    usersFile.interactions.push({
 | 
				
			||||||
 | 
					      owner_id: Number(owner_id),
 | 
				
			||||||
 | 
					      dogsitter_id: Number(dogsitter_id),
 | 
				
			||||||
 | 
					      interaction_type,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fs.writeFileSync(
 | 
				
			||||||
 | 
					      usersFilePath,
 | 
				
			||||||
 | 
					      JSON.stringify(usersFile, null, 2),
 | 
				
			||||||
 | 
					      "utf8"
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    console.log(
 | 
				
			||||||
 | 
					      `Добавлено взаимодействие: owner_id=${owner_id}, dogsitter_id=${dogsitter_id}`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res.json({ success: true });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.get("/dogsitter-viewing", (req, res) => {
 | 
				
			||||||
 | 
					  const { id } = req.query;
 | 
				
			||||||
 | 
					  console.log(`Получен запрос для dogsitter с ID: ${id}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usersFile = require(`../json/users/${stubs.users}.json`);
 | 
				
			||||||
 | 
					  const users = usersFile.data; // Извлекаем массив из свойства "data"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const user = users.find((user) => user.id === Number(id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (user) {
 | 
				
			||||||
 | 
					    res.json(user); // Возвращаем найденного пользователя
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    res.status(404).json({ error: "User not found" }); // Если пользователь не найден
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					const path = require('path');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.post('/dogsitter-viewing/rating/:id', (req, res) => {
 | 
				
			||||||
 | 
					  const { id } = req.params;
 | 
				
			||||||
 | 
					  const { rating } = req.body;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!rating || rating < 1 || rating > 5) {
 | 
				
			||||||
 | 
					    return res.status(400).json({ error: 'Некорректная оценка' });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usersFilePath = path.resolve(__dirname, '../json/users/success.json');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete require.cache[require.resolve(usersFilePath)];
 | 
				
			||||||
 | 
					  const usersFile = require(usersFilePath);
 | 
				
			||||||
 | 
					  const users = usersFile.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const userIndex = users.findIndex(user => user.id === Number(id));
 | 
				
			||||||
 | 
					  if (userIndex === -1) {
 | 
				
			||||||
 | 
					    return res.status(404).json({ error: 'Догситтер не найден' });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!users[userIndex].ratings) {
 | 
				
			||||||
 | 
					    users[userIndex].ratings = [];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  users[userIndex].ratings.push(rating);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (users[userIndex].ratings.length > 100) {
 | 
				
			||||||
 | 
					    users[userIndex].ratings.shift();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const total = users[userIndex].ratings.reduce((sum, r) => sum + r, 0);
 | 
				
			||||||
 | 
					  users[userIndex].rating = parseFloat((total / users[userIndex].ratings.length).toFixed(2));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fs.writeFileSync(usersFilePath, JSON.stringify({ data: users }, null, 2), 'utf8');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  console.log(`Обновлен рейтинг догситтера ${id}: ${users[userIndex].rating}`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res.json({ rating: users[userIndex].rating, ratings: users[userIndex].ratings });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.patch('/users/:id', (req, res) => {
 | 
				
			||||||
 | 
					  const { id } = req.params;
 | 
				
			||||||
 | 
					  const updateData = req.body;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  console.log('Полученные данные для обновления:', updateData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const usersFilePath = path.resolve(__dirname, '../json/users/success.json');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  delete require.cache[require.resolve(usersFilePath)];
 | 
				
			||||||
 | 
					  const usersFile = require(usersFilePath);
 | 
				
			||||||
 | 
					  const users = usersFile.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const userIndex = users.findIndex((user) => user.id === Number(id));
 | 
				
			||||||
 | 
					  if (userIndex === -1) {
 | 
				
			||||||
 | 
					    return res.status(404).json({ error: 'User not found' });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  users[userIndex] = { ...users[userIndex], ...updateData };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fs.writeFileSync(
 | 
				
			||||||
 | 
					    usersFilePath,
 | 
				
			||||||
 | 
					    JSON.stringify({ data: users }, null, 2),
 | 
				
			||||||
 | 
					    'utf8'
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  console.log('Обновлённые данные пользователя:', users[userIndex]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res.json(users[userIndex]);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = router
 | 
					module.exports = router
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user