Compare commits

...

4 Commits

Author SHA1 Message Date
a64ac93935 Fix paths
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-08 14:54:57 +03:00
26c66f16b4 Add queries to dogsitter-viewing 2025-02-08 14:33:29 +03:00
fadc62c8f0 Update users.json 2025-02-08 14:25:29 +03:00
14f2164a82 Uncomment dogsitters app 2025-02-08 13:44:34 +03:00
3 changed files with 227 additions and 40 deletions

View File

@@ -81,7 +81,7 @@ app.use(require("./root"))
app.use("/kfu-m-24-1", require("./routers/kfu-m-24-1")) app.use("/kfu-m-24-1", require("./routers/kfu-m-24-1"))
app.use("/epja-2024-1", require("./routers/epja-2024-1")) app.use("/epja-2024-1", require("./routers/epja-2024-1"))
app.use("/v1/todo", require("./routers/todo")) app.use("/v1/todo", require("./routers/todo"))
// app.use("/dogsitters-finder", require("./routers/dogsitters-finder")) app.use("/dogsitters-finder", require("./routers/dogsitters-finder"))
app.use("/kazan-explore", require("./routers/kazan-explore")) app.use("/kazan-explore", require("./routers/kazan-explore"))
app.use("/edateam", require("./routers/edateam-legacy")) app.use("/edateam", require("./routers/edateam-legacy"))
app.use("/dry-wash", require("./routers/dry-wash")) app.use("/dry-wash", require("./routers/dry-wash"))

View File

@@ -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/users.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/users.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/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/users.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/users.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

View File

@@ -1,39 +1,69 @@
[ {
{ "data": [
"id": 1, {
"phone_number": 89283244141, "id": 1,
"first_name": "Вася", "phone_number": "89999999999",
"second_name": "Пупкин", "first_name": "Вася",
"role": "dogsitter", "second_name": "Пупкин",
"location": "Россия, республика Татарстан, Казань, улица Пушкина, 12", "role": "dogsitter",
"price": 1500, "location": "Россия, республика Татарстан, Казань, Пушкина, 12",
"about_me": "Я люблю собак" "price": "1500",
}, "about_me": "Я люблю собак!",
{ "rating": 5,
"id": 2, "ratings": [
"phone_number": 89272844541, 5,
"first_name": "Ваня", 5
"second_name": "Пуськин", ],
"role": "dogsitter", "tg": "jullllllie"
"location": "Россия, республика Татарстан, Казань, улица Абсалямова, 19", },
"price": 1000000, {
"about_me": "Я не люблю собак. И вообще я котоман." "id": 2,
}, "phone_number": 89272844541,
{ "first_name": "Ваня",
"id": 3, "second_name": "Пуськин",
"phone_number": 89872855893, "role": "dogsitter",
"first_name": "Гадий", "location": "Россия, республика Татарстан, Казань, улица Абсалямова, 19",
"second_name": "Петрович", "price": 2000,
"role": "owner" "about_me": "Я не люблю собак. И вообще я котоман.",
}, "rating": 4,
{ "ratings": [
"id": 4, 4,
"phone_number": 89872844591, 4
"first_name": "Галкин", ],
"second_name": "Максим", "tg": "vanya006"
"role": "dogsitter", },
"location": "Россия, республика Татарстан, Казань, проспект Ямашева, 83", {
"price": 1000000, "id": 3,
"about_me": "Миллион алых роз" "phone_number": 89559999999,
} "first_name": "Гадий",
] "second_name": "Петрович",
"role": "owner"
},
{
"id": 4,
"phone_number": 89872844591,
"first_name": "Галкин",
"second_name": "Максим",
"role": "dogsitter",
"location": "Россия, республика Татарстан, Казань, проспект Ямашева, 83",
"price": 1750,
"about_me": "Миллион алых роз",
"rating": 4.5,
"ratings": [
4,
5
],
"tg": "maks100500"
}
],
"interactions": [
{
"owner_id": 3,
"dogsitter_id": 4
},
{
"owner_id": 1,
"dogsitter_id": 2
}
]
}