mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
166 lines
5.9 KiB
C++
166 lines
5.9 KiB
C++
#include "commonclienthandler.h"
|
||
|
||
CommonClientHandler::CommonClientHandler(QObject *parent) : QObject(parent)
|
||
{
|
||
|
||
}
|
||
|
||
void CommonClientHandler::initialize(QMap<int, ClientHandler *> *clientsMap, ProcessingSystem *processingSystem, DataParser *dataParser, Logger *logger)
|
||
{
|
||
this->clientsMap = clientsMap;
|
||
this->processingSystem = processingSystem;
|
||
this->dataParser = dataParser;
|
||
this->logger = logger;
|
||
|
||
connect(this,&CommonClientHandler::sigSendToLogger,logger,&Logger::addTextToLogger,Qt::AutoConnection);
|
||
}
|
||
|
||
void CommonClientHandler::sendNewVersionListToAllClient()
|
||
{
|
||
foreach(int idSocket,clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
|
||
if (!handler->getClient()->getIsLoggedIn()) continue;
|
||
|
||
handler->sendVersionList();
|
||
}
|
||
}
|
||
|
||
void CommonClientHandler::sendCurrentVersionToAllClient()
|
||
{
|
||
foreach(int idSocket,clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
|
||
if (!handler->getClient()->getIsLoggedIn()) continue;
|
||
handler->sendVersion();
|
||
|
||
}
|
||
}
|
||
|
||
void CommonClientHandler::slot_ListsInstructorsTraineesChanged()
|
||
{
|
||
//Проходим все открытые сокеты
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
//Проверяем, есть ли клиенты TYPE_GUI
|
||
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
||
{//Отправляем этому клиенту обновление списков
|
||
ClientQueryToDB queryToDB;
|
||
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_GET_ALL_LISTS;
|
||
processingSystem->processingClientQueryToDB(handler, queryToDB);
|
||
}
|
||
|
||
if(handler->getClient()->getIsUnity())
|
||
{
|
||
ClientQueryToDB queryToDB;
|
||
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_GET_CONTACT_LIST;
|
||
processingSystem->processingClientQueryToDB(handler, queryToDB);
|
||
}
|
||
}
|
||
}
|
||
|
||
void CommonClientHandler::slot_StatusTasksAMMofTraineeChanged(int trainee_id)
|
||
{
|
||
//Проходим все открытые сокеты
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
//Проверяем, есть ли клиенты TYPE_GUI
|
||
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
||
{//Отправляем этому клиенту задачи AMM для Обучаемого (с измененным статусом)
|
||
ClientQueryToDB queryToDB;
|
||
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE;
|
||
processingSystem->processingClientQueryToDB(handler, queryToDB, trainee_id);
|
||
}
|
||
}
|
||
|
||
/*
|
||
//Отправка списка задач AMM клиенту Юнити
|
||
if(ClientHandler* clientUnity = processingSystem->getUnityClientById(trainee_id))
|
||
{//Есть такой
|
||
//processingSystem->sendListTasksAMMofTraineetoClient(clientUnity, trainee_id);
|
||
}*/
|
||
}
|
||
|
||
void CommonClientHandler::slot_StatusTasksFIMofTraineeChanged(int trainee_id)
|
||
{
|
||
//Проходим все открытые сокеты
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
//Проверяем, есть ли клиенты TYPE_GUI
|
||
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
||
{//Отправляем этому клиенту задачи FIM для Обучаемого (с измененным статусом)
|
||
ClientQueryToDB queryToDB;
|
||
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE;
|
||
processingSystem->processingClientQueryToDB(handler, queryToDB, trainee_id);
|
||
}
|
||
}
|
||
|
||
/*
|
||
//Отправка списка задач FIM клиенту Юнити
|
||
if(ClientHandler* clientUnity = processingSystem->getUnityClientById(trainee_id))
|
||
{//Есть такой
|
||
//processingSystem->sendListTasksFIMofTraineetoClient(clientUnity, trainee_id);
|
||
}*/
|
||
}
|
||
|
||
void CommonClientHandler::slot_sendPacketToAllClients(PacketType packetType)
|
||
{
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
|
||
if (!handler->getClient()->getIsLoggedIn()) continue;
|
||
|
||
handler->sendPacketType(packetType);
|
||
}
|
||
}
|
||
|
||
void CommonClientHandler::slotSendMessage(QString idFrom, QString idTo, QString text)
|
||
{
|
||
QString textMsg = text;
|
||
|
||
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(idFrom,idTo,text);
|
||
|
||
//Проходим все открытые сокеты, ищем нужный
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
if(handler->getClient()->getId() == idTo)
|
||
{
|
||
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
|
||
QString str = "Msg From Client [" + idFrom + " to " + idTo + "] : " + textMsg;
|
||
|
||
emit sigSendToLogger(str);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString textTask)
|
||
{
|
||
QByteArray byteArrayTask = dataParser->ClientAnswer()->task(textTask);
|
||
|
||
//Проходим все открытые сокеты
|
||
foreach(int idSocket, clientsMap->keys())
|
||
{
|
||
ClientHandler *handler = clientsMap->value(idSocket);
|
||
|
||
if(handler->getClient()->getFullName() == fullNameClient)
|
||
{//Отправляем ему
|
||
handler->getSocket()->write(byteArrayTask);
|
||
|
||
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
||
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
||
|
||
QString str = "Task To Client [" + peerAddress + ":" + peerPort + "] : " + textTask;
|
||
emit sigSendToLogger(str);
|
||
}
|
||
}
|
||
}
|
||
|