/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Controllers/MessageController.cpp
117 строк
5 KB
Shymer123
Initial commit: LumenServer
20 июн 2026, 12:43
20 июн 2026, 12:43
173f14c
Код
Авторство
О чём код?
#include "MessageController.h" #include "Core/Utils/TimeFormat.h" #include <iostream> namespace Controllers { MessageController::MessageController(Services::MessageService& messageService) : m_messageService(messageService) {} nlohmann::json MessageController::handleSendMessage(const Core::Network::RequestContext& req) { if(const auto& jsonData = req.json()) { const auto& json = jsonData->get(); int32_t request_id = json.value("request_id", -1); Data::Models::Message message; message.type = Core::Types::messageTypeFromString(json.value("type", "")); message.chatId = json.value("chat_id", ""); message.senderId = *req.userId; message.timestamp = Core::Utils::from_qt_timestamp(json.value("timestamp", "")); message.status = Core::Types::messageStatusFromString(json.value("status", "")); message.text = json.value("text", ""); auto responseMessage = m_messageService.sendMessage(message); nlohmann::json response; response["request_id"] = static_cast<int64_t>(request_id); if(responseMessage) { response["status"] = "ok"; nlohmann::json messageObj; messageObj["id"] = responseMessage->id; messageObj["type"] = Core::Types::messageTypeToString(responseMessage->type); messageObj["chat_id"] = responseMessage->chatId; messageObj["sender_id"] = responseMessage->senderId; messageObj["timestamp"] = Core::Utils::to_qt_timestamp(responseMessage->timestamp); messageObj["status"] = Core::Types::messageStatusToString(responseMessage->status); messageObj["text"] = responseMessage->text; response["message"] = messageObj; } else { response["status"] = "error"; response["message"] = "Failed to send message"; } return response; } return {{"status", "error"}, {"message", "The request is not a json request"}}; } nlohmann::json MessageController::handleGetMessages(const Core::Network::RequestContext& req) { if(const auto& jsonData = req.json()) { const auto& json = jsonData->get(); int32_t request_id = json.value("request_id", -1); std::string chatId = json.value("chat_id", ""); int limit = json.value("limit", 50); int offset = json.value("offset", 0); auto messages = m_messageService.loadMessages(chatId, limit, offset); nlohmann::json response; response["request_id"] = static_cast<int64_t>(request_id); if(!messages.empty()) { response["status"] = "ok"; nlohmann::json arr = nlohmann::json::array(); for(const auto& message : messages) { nlohmann::json messageObj; messageObj["id"] = message.id; messageObj["type"] = Core::Types::messageTypeToString(message.type); messageObj["chat_id"] = message.chatId; messageObj["sender_id"] = message.senderId; messageObj["timestamp"] = Core::Utils::to_qt_timestamp(message.timestamp); messageObj["status"] = Core::Types::messageStatusToString(message.status); messageObj["text"] = message.text; if(!message.fileAttachment.empty()) { nlohmann::json fileArr = nlohmann::json::array(); for(const auto& fileVal : message.fileAttachment) { nlohmann::json fileObj; fileObj["id"] = fileVal.id; fileObj["name"] = fileVal.fileName; fileObj["mime"] = fileVal.mimeType; fileObj["size"] = fileVal.size; fileArr.push_back(fileObj); } messageObj["files"] = fileArr; } arr.push_back(messageObj); } response["messages"] = arr; } else { response["status"] = "error"; response["message"] = "Failed to load messages"; } return response; } return {{"status", "error"}, {"message", "The request is not a json request"}}; } } // namespace Controllers