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