diff --git a/DataBaseLMS/typeQueryToDB.h b/DataBaseLMS/typeQueryToDB.h index 5f712bd..1bf1107 100644 --- a/DataBaseLMS/typeQueryToDB.h +++ b/DataBaseLMS/typeQueryToDB.h @@ -26,7 +26,9 @@ enum TypeQueryToDB{ TYPE_QUERY_SET_REPORT_TASK_FIM_TO_TRAINEE, TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE, - TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE + TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE, + + TYPE_QUERY_GET_CONTACT_LIST }; #endif // TYPEQUERYTODB_H diff --git a/ServerLMS/Data/PacketType.h b/ServerLMS/Data/PacketType.h index b141ff0..3f16267 100644 --- a/ServerLMS/Data/PacketType.h +++ b/ServerLMS/Data/PacketType.h @@ -19,7 +19,7 @@ enum PacketType TYPE_FILESIZE = 20, TYPE_BIGXML = 21, - TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90, + TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90, //xml-ответы на запросы к БД TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS = 100, @@ -42,7 +42,8 @@ enum PacketType DELETE_DATA_VERSION = 153, BUSY = 154, FREE = 155, - HASH_CALCULATE_START = 156 + HASH_CALCULATE_START = 156, + }; diff --git a/ServerLMS/Systems/Parsers/dbanswerparser.cpp b/ServerLMS/Systems/Parsers/dbanswerparser.cpp index 707720e..ae7f232 100644 --- a/ServerLMS/Systems/Parsers/dbanswerparser.cpp +++ b/ServerLMS/Systems/Parsers/dbanswerparser.cpp @@ -102,6 +102,31 @@ QByteArray DBAnswerParser::listClassrooms(bool result, QList *listCla return QByteArray(); } +QByteArray DBAnswerParser::listContacts(bool result, QList *listContacts) +{ + QDomDocument doc; + QDomProcessingInstruction xmlDecl = doc.createProcessingInstruction("xml", "version='1.0' encoding='utf-8'"); + doc.insertBefore(xmlDecl,doc.firstChild()); + QDomElement root = doc.createElement("ContactArray"); + + for(User entity : *listContacts) + { + QDomElement contact = doc.createElement("ContactData"); + contact.toElement().setAttribute("name",entity.getName()); + contact.toElement().setAttribute("id",entity.getID()); + QString isLogged = entity.getLoggedIn() ? "1" : "0"; + contact.toElement().setAttribute("isOnline",isLogged); + + root.appendChild(contact); + } + + doc.appendChild(root); + + qDebug() << doc.toString(); + return doc.toByteArray(); + +} + QByteArray DBAnswerParser::listTasksAMMofTrainee(bool result, QList *listTasks, int trainee_id, bool full_list) { QDomDocument commonDOM; diff --git a/ServerLMS/Systems/Parsers/dbanswerparser.h b/ServerLMS/Systems/Parsers/dbanswerparser.h index 8f8e5b0..a025f8f 100644 --- a/ServerLMS/Systems/Parsers/dbanswerparser.h +++ b/ServerLMS/Systems/Parsers/dbanswerparser.h @@ -18,6 +18,7 @@ public: QByteArray listTrainees(bool result, QList *listTrainees); QByteArray listComputers(bool result, QList *listComputers); QByteArray listClassrooms(bool result, QList *listClassrooms); + QByteArray listContacts(bool result, QList *listContacts); QByteArray listTasksAMMofTrainee(bool result, QList *listTasks, int trainee_id, bool full_list); QByteArray listTasksFIMofTrainee(bool result, QList *listTasks, int trainee_id, bool full_list); diff --git a/ServerLMS/Systems/commonclienthandler.cpp b/ServerLMS/Systems/commonclienthandler.cpp index 707497c..2198868 100644 --- a/ServerLMS/Systems/commonclienthandler.cpp +++ b/ServerLMS/Systems/commonclienthandler.cpp @@ -52,6 +52,13 @@ void CommonClientHandler::slot_ListsInstructorsTraineesChanged() 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); + } } } diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index ab52f47..51d5ccf 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -425,6 +425,30 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu } break; } + + case TypeQueryToDB::TYPE_QUERY_GET_CONTACT_LIST: + { + QList entitylist; + QList listInstructor = providerDBLMS->GetListAllInstructors(); + QList listTrainees = providerDBLMS->GetListAllTrainees(); + + for (Instructor instructor : listInstructor) + { + entitylist.append(static_cast(instructor)); + } + + for (Trainee trainee : listTrainees) + { + entitylist.append(static_cast(trainee)); + } + + QByteArray arrayAnswer; + + arrayAnswer = dataParser->DbAnswer()->listContacts(true, &entitylist); + + client->sendFileBlockByteArray(arrayAnswer,PacketType::TYPE_BIGXML); + } + } }