фикс
This commit is contained in:
parent
ee5222db82
commit
41a6664c32
@ -1,3 +1,4 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
const User = require('../models/User');
|
const User = require('../models/User');
|
||||||
const Conversation = require('../models/Conversation');
|
const Conversation = require('../models/Conversation');
|
||||||
const Message = require('../models/Message');
|
const Message = require('../models/Message');
|
||||||
@ -209,6 +210,7 @@ const getAppStatistics = async (req, res) => {
|
|||||||
*/
|
*/
|
||||||
const getAllConversations = async (req, res) => {
|
const getAllConversations = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
|
console.log('[ADMIN] Запрос списка диалогов');
|
||||||
const { page = 1, limit = 20, userId } = req.query;
|
const { page = 1, limit = 20, userId } = req.query;
|
||||||
const skip = (page - 1) * limit;
|
const skip = (page - 1) * limit;
|
||||||
|
|
||||||
@ -217,9 +219,16 @@ const getAllConversations = async (req, res) => {
|
|||||||
|
|
||||||
// Фильтр по пользователю, если указан
|
// Фильтр по пользователю, если указан
|
||||||
if (userId) {
|
if (userId) {
|
||||||
|
console.log(`[ADMIN] Фильтр по пользователю: ${userId}`);
|
||||||
|
if (!mongoose.Types.ObjectId.isValid(userId)) {
|
||||||
|
console.log(`[ADMIN] Недопустимый формат ID пользователя: ${userId}`);
|
||||||
|
return res.status(400).json({ message: 'Недопустимый формат ID пользователя' });
|
||||||
|
}
|
||||||
filter.participants = userId;
|
filter.participants = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(`[ADMIN] Поиск диалогов с фильтром:`, filter);
|
||||||
|
|
||||||
// Получаем диалоги с пагинацией и данными участников
|
// Получаем диалоги с пагинацией и данными участников
|
||||||
const conversations = await Conversation.find(filter)
|
const conversations = await Conversation.find(filter)
|
||||||
.populate('participants', 'name email photos')
|
.populate('participants', 'name email photos')
|
||||||
@ -228,11 +237,20 @@ const getAllConversations = async (req, res) => {
|
|||||||
.limit(parseInt(limit))
|
.limit(parseInt(limit))
|
||||||
.sort({ updatedAt: -1 });
|
.sort({ updatedAt: -1 });
|
||||||
|
|
||||||
|
console.log(`[ADMIN] Найдено диалогов: ${conversations.length}`);
|
||||||
|
|
||||||
// Получаем общее количество диалогов для пагинации
|
// Получаем общее количество диалогов для пагинации
|
||||||
const total = await Conversation.countDocuments(filter);
|
const total = await Conversation.countDocuments(filter);
|
||||||
|
|
||||||
|
// Добавляем дополнительную информацию о диалогах
|
||||||
|
const conversationsWithInfo = conversations.map(conv => {
|
||||||
|
const convObj = conv.toObject();
|
||||||
|
convObj._id = convObj._id.toString(); // Преобразуем ObjectId в строку для безопасности
|
||||||
|
return convObj;
|
||||||
|
});
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
conversations,
|
conversations: conversationsWithInfo,
|
||||||
pagination: {
|
pagination: {
|
||||||
page: parseInt(page),
|
page: parseInt(page),
|
||||||
limit: parseInt(limit),
|
limit: parseInt(limit),
|
||||||
@ -241,7 +259,7 @@ const getAllConversations = async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Ошибка при получении списка диалогов:', error);
|
console.error('[ADMIN] Ошибка при получении списка диалогов:', error);
|
||||||
res.status(500).json({ message: 'Ошибка сервера при получении списка диалогов' });
|
res.status(500).json({ message: 'Ошибка сервера при получении списка диалогов' });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -254,15 +272,27 @@ const getAllConversations = async (req, res) => {
|
|||||||
const getConversationMessages = async (req, res) => {
|
const getConversationMessages = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const conversationId = req.params.id;
|
const conversationId = req.params.id;
|
||||||
|
console.log(`[ADMIN] Запрос сообщений для диалога с ID: ${conversationId}`);
|
||||||
|
|
||||||
|
if (!mongoose.Types.ObjectId.isValid(conversationId)) {
|
||||||
|
console.log(`[ADMIN] Недопустимый формат ID диалога: ${conversationId}`);
|
||||||
|
return res.status(400).json({ message: 'Недопустимый формат ID диалога' });
|
||||||
|
}
|
||||||
|
|
||||||
const { page = 1, limit = 50 } = req.query;
|
const { page = 1, limit = 50 } = req.query;
|
||||||
const skip = (page - 1) * limit;
|
const skip = (page - 1) * limit;
|
||||||
|
|
||||||
// Проверяем существование диалога
|
// Проверяем существование диалога с подробным логированием
|
||||||
|
console.log(`[ADMIN] Поиск диалога с ID: ${conversationId}`);
|
||||||
const conversation = await Conversation.findById(conversationId);
|
const conversation = await Conversation.findById(conversationId);
|
||||||
|
|
||||||
if (!conversation) {
|
if (!conversation) {
|
||||||
|
console.log(`[ADMIN] Диалог с ID ${conversationId} не найден в базе данных`);
|
||||||
return res.status(404).json({ message: 'Диалог не найден' });
|
return res.status(404).json({ message: 'Диалог не найден' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(`[ADMIN] Диалог найден, участники: ${conversation.participants}`);
|
||||||
|
|
||||||
// Получаем сообщения с пагинацией
|
// Получаем сообщения с пагинацией
|
||||||
const messages = await Message.find({ conversationId })
|
const messages = await Message.find({ conversationId })
|
||||||
.populate('sender', 'name email')
|
.populate('sender', 'name email')
|
||||||
@ -270,11 +300,17 @@ const getConversationMessages = async (req, res) => {
|
|||||||
.limit(parseInt(limit))
|
.limit(parseInt(limit))
|
||||||
.sort({ createdAt: -1 });
|
.sort({ createdAt: -1 });
|
||||||
|
|
||||||
|
console.log(`[ADMIN] Найдено сообщений: ${messages.length}`);
|
||||||
|
|
||||||
// Получаем общее количество сообщений для пагинации
|
// Получаем общее количество сообщений для пагинации
|
||||||
const total = await Message.countDocuments({ conversationId });
|
const total = await Message.countDocuments({ conversationId });
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
messages,
|
messages,
|
||||||
|
conversation: {
|
||||||
|
id: conversation._id,
|
||||||
|
participants: conversation.participants
|
||||||
|
},
|
||||||
pagination: {
|
pagination: {
|
||||||
page: parseInt(page),
|
page: parseInt(page),
|
||||||
limit: parseInt(limit),
|
limit: parseInt(limit),
|
||||||
@ -283,7 +319,7 @@ const getConversationMessages = async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Ошибка при получении сообщений диалога:', error);
|
console.error('[ADMIN] Ошибка при получении сообщений диалога:', error);
|
||||||
res.status(500).json({ message: 'Ошибка сервера при получении сообщений диалога' });
|
res.status(500).json({ message: 'Ошибка сервера при получении сообщений диалога' });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user