diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index 4268b02..955cebc 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -67,6 +67,7 @@ add_library(InstructorsAndTrainees SHARED connectorToServer/connectortoserver.h connectorToServer/connectortoserver_LocalModelDB.cpp connectorToServer/connectortoserver_AnswerQueryToDB.cpp + connectorToServer/connectortoserver_Send.cpp connectorToServer/Core/sendsystem.cpp connectorToServer/Core/sendsystem.h connectorToServer/Core/dataparser.cpp diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index c25f360..c96e7a3 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -32,111 +32,6 @@ ConnectorToServer::~ConnectorToServer() delete connectionThread; } -bool ConnectorToServer::authorizationInstructorLocal(QString login, QString password) -{ - if (!client->getIsConnected()) - { - return false; - } - - ClientAutorization *autorization = new ClientAutorization; - autorization->Login = login; - autorization->Password = password; - autorization->TypeClient = TypeClientAutorization::TYPE_GUI; - - QByteArray array = dataParser->createAuthMessage(autorization); - emit sigSendAnswerToServer(array); - - return true; -} - -bool ConnectorToServer::deAuthorizationInstructorLocal(QString login) -{ - if (!client->getIsConnected()) - { - return false; - } - - ClientDeAutorization *deAutorization = new ClientDeAutorization; - deAutorization->Login = login; - - QByteArray array = dataParser->createDeAuthMessage(deAutorization); - emit sigSendAnswerToServer(array); - - return true; -} - -bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* data) -{ - if (!client->getIsConnected()) - { - return false; - } - - ClientQueryToDB *queryToDB = new ClientQueryToDB; - queryToDB->typeQuery = typeQuery; - - QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data); - emit sigSendAnswerToServer(array); - - return true; -} - -bool ConnectorToServer::sendMessage(ClientMessage clientMessage) -{ - if (!client->getIsConnected()) - { - return false; - } - QByteArray array = dataParser->createMessage(clientMessage); - emit sigSendAnswerToServer(array); - - return true; -} - -bool ConnectorToServer::sendClientNotify(QString command) -{ - QByteArray answer = dataParser->xmlAnswer_notify(command); - emit sigSendAnswerToServer(answer); - return true; -} -bool ConnectorToServer::sendQueryTasksXML(QString type) -{ - if (!client->getIsConnected()) - { - return false; - } - - QByteArray array = dataParser->createQueryTasksXMLMessage(type); - emit sigSendAnswerToServer(array); - - return true; -} - -bool ConnectorToServer::sendQueryBlockAuth(bool block) -{ - if (!client->getIsConnected()) - { - return false; - } - - QByteArray array = dataParser->createQueryBlockAuth(block); - emit sigSendAnswerToServer(array); - - return true; -} - -void ConnectorToServer::showVersionSelect() -{ - QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList); - emit sigSendAnswerToServer(answer); -} - -void ConnectorToServer::setLoginName(QString name) -{ - versionSelectWidget->setAuthor(name); -} - ServerSettings ConnectorToServer::getServerSettings() { return serverSettings; @@ -159,6 +54,11 @@ void ConnectorToServer::StopConnectToServer() clearListModelDB(); } +void ConnectorToServer::setLoginName(QString name) +{ + versionSelectWidget->setAuthor(name); +} + void ConnectorToServer::slot_sendMessage(ClientMessage clientMessage) { sendMessage(clientMessage); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index 67a28e8..804c0ce 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -26,19 +26,6 @@ public: ~ConnectorToServer(); public: - bool authorizationInstructorLocal(QString login, QString password); - bool deAuthorizationInstructorLocal(QString login); - - bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, void* data = nullptr); - bool sendMessage(ClientMessage clientMessage); - - bool sendQueryTasksXML(QString type); - bool sendQueryBlockAuth(bool block); - - void showVersionSelect(); - void setLoginName(QString name); - bool sendClientNotify(QString command); - ServerSettings getServerSettings(); bool getIsConnected(); @@ -48,8 +35,24 @@ public: void SetConnectToServer(); void StopConnectToServer(); + void setLoginName(QString name); + public: - //Запросы к БД (локальной) + //Send + bool sendAuthorizationInstructorLocal(QString login, QString password); + bool sendDeAuthorizationInstructorLocal(QString login); + + bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, void* data = nullptr); + bool sendMessage(ClientMessage clientMessage); + + bool sendQueryTasksXML(QString type); + bool sendQueryBlockAuth(bool block); + + void sendShowVersionSelect(); + bool sendClientNotify(QString command); + +public: + //LocalModelDB QByteArray getListTaskFimArray(); QByteArray getListTaskAmmArray(); @@ -82,7 +85,7 @@ private: void clearListModelDB(); public slots: - //Ответы на запросы к Серверу + //AnswerQueryToDB void slot_AnswerQueryToDB_ListInstructors(QList listInstructors); void slot_AnswerQueryToDB_ListGroups(QList listGroups); void slot_AnswerQueryToDB_ListTrainees(QList listTrainees); @@ -90,16 +93,13 @@ public slots: void slot_AnswerQueryToDB_ListClassrooms(QList listClassrooms); void slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList listTasks, int trainee_id); void slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList listTasks, int trainee_id); - void slot_AnswerQueryTasksXML_FIM(QByteArray array); void slot_AnswerQueryTasksXML_AMM(QByteArray array); +public slots: void slot_sendMessage(ClientMessage clientMessage); - void slot_showServerList(QList *serverList); - void slot_HashReady(); - void slot_Auth(ServerAuthorization * serverAuth); signals: @@ -144,6 +144,7 @@ private: NotifyController *notifyController; //Списочная модель БД СУО + QMutex mtxAccess; QList listInstructors; QList listGroups; QList listTrainees; @@ -157,9 +158,7 @@ private: ServerSettings serverSettings; ServerAuthorization serverAuth; - bool fl_GetedOfflineMessages; - - QMutex mtxAccess; + bool fl_GetedOfflineMessages; }; #endif // CONNECTORTOSERVER_H diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp index d89586c..a28772a 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp @@ -2,83 +2,112 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList listInstructors) { - //mtxAccess.lock(); - this->listInstructors = listInstructors; + mtxAccess.lock(); - emit signal_UpdateDB(true, false); + this->listInstructors = listInstructors; QList listUsers; for(Instructor instructor : listInstructors) { listUsers.append(instructor); } - //mtxAccess.unlock(); + mtxAccess.unlock(); + + emit signal_UpdateDB(true, false); emit signal_reInitMessangerByUsers(listUsers); } void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList listGroups) { + mtxAccess.lock(); this->listGroups = listGroups; + mtxAccess.unlock(); + emit signal_UpdateDB(false, true); } void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList listTrainees) { + mtxAccess.lock(); + this->listTrainees = listTrainees; - emit signal_UpdateDB(false, true); QList listUsers; for(Trainee trainee : listTrainees) { listUsers.append(trainee); } + + mtxAccess.unlock(); + + emit signal_UpdateDB(false, true); emit signal_reInitMessangerByUsers(listUsers); } void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList listComputers) { + mtxAccess.lock(); this->listComputers = listComputers; + mtxAccess.unlock(); + //emit signal_UpdateDB(false, true); //TODO } void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList listClassrooms) { + mtxAccess.lock(); this->listClassrooms = listClassrooms; + mtxAccess.unlock(); + //emit signal_UpdateDB(false, true); //TODO } void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList listTasks, int trainee_id) { + mtxAccess.lock(); + //Удаляем старые задачи этого обучаемого mapTasksAMM.remove(trainee_id); //Добавляем новые mapTasksAMM.insert(trainee_id, listTasks); + mtxAccess.unlock(); + emit signal_UpdateTasksAMMforTrainee(trainee_id); } void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList listTasks, int trainee_id) { + mtxAccess.lock(); + //Удаляем старые задачи этого обучаемого mapTasksFIM.remove(trainee_id); //Добавляем новые mapTasksFIM.insert(trainee_id, listTasks); + mtxAccess.unlock(); + emit signal_UpdateTasksFIMforTrainee(trainee_id); } void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) { + mtxAccess.lock(); this->listTaskFimArray = array; + mtxAccess.unlock(); + emit signal_UpdateTasksFIM(); } void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array) { + mtxAccess.lock(); this->listTaskAmmArray = array; + mtxAccess.unlock(); + emit signal_UpdateTasksAMM(); //Запрос старых оффлайн-сообщений diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver_Send.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver_Send.cpp new file mode 100644 index 0000000..be0536c --- /dev/null +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver_Send.cpp @@ -0,0 +1,102 @@ +#include "connectortoserver.h" + +bool ConnectorToServer::sendAuthorizationInstructorLocal(QString login, QString password) +{ + if (!client->getIsConnected()) + { + return false; + } + + ClientAutorization *autorization = new ClientAutorization; + autorization->Login = login; + autorization->Password = password; + autorization->TypeClient = TypeClientAutorization::TYPE_GUI; + + QByteArray array = dataParser->createAuthMessage(autorization); + emit sigSendAnswerToServer(array); + + return true; +} + +bool ConnectorToServer::sendDeAuthorizationInstructorLocal(QString login) +{ + if (!client->getIsConnected()) + { + return false; + } + + ClientDeAutorization *deAutorization = new ClientDeAutorization; + deAutorization->Login = login; + + QByteArray array = dataParser->createDeAuthMessage(deAutorization); + emit sigSendAnswerToServer(array); + + return true; +} + +bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* data) +{ + if (!client->getIsConnected()) + { + return false; + } + + ClientQueryToDB *queryToDB = new ClientQueryToDB; + queryToDB->typeQuery = typeQuery; + + QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data); + emit sigSendAnswerToServer(array); + + return true; +} + +bool ConnectorToServer::sendMessage(ClientMessage clientMessage) +{ + if (!client->getIsConnected()) + { + return false; + } + QByteArray array = dataParser->createMessage(clientMessage); + emit sigSendAnswerToServer(array); + + return true; +} + +bool ConnectorToServer::sendClientNotify(QString command) +{ + QByteArray answer = dataParser->xmlAnswer_notify(command); + emit sigSendAnswerToServer(answer); + return true; +} + +bool ConnectorToServer::sendQueryTasksXML(QString type) +{ + if (!client->getIsConnected()) + { + return false; + } + + QByteArray array = dataParser->createQueryTasksXMLMessage(type); + emit sigSendAnswerToServer(array); + + return true; +} + +bool ConnectorToServer::sendQueryBlockAuth(bool block) +{ + if (!client->getIsConnected()) + { + return false; + } + + QByteArray array = dataParser->createQueryBlockAuth(block); + emit sigSendAnswerToServer(array); + + return true; +} + +void ConnectorToServer::sendShowVersionSelect() +{ + QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList); + emit sigSendAnswerToServer(answer); +} diff --git a/InstructorsAndTrainees/dialogsettings.cpp b/InstructorsAndTrainees/dialogsettings.cpp index 8a842bc..006668b 100644 --- a/InstructorsAndTrainees/dialogsettings.cpp +++ b/InstructorsAndTrainees/dialogsettings.cpp @@ -199,7 +199,7 @@ void DialogSettings::on_btnSetVersion_clicked() { if(connectorToServer) if(connectorToServer->getIsConnected()) - connectorToServer->showVersionSelect(); + connectorToServer->sendShowVersionSelect(); } void DialogSettings::on_cmbLanguage_currentIndexChanged(int index) diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index f08745a..f696571 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -316,7 +316,7 @@ bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent // Вычисление MD5 хэша password = HashTools::hashingMD5string(password); - connectorToServer->authorizationInstructorLocal(login, password); + connectorToServer->sendAuthorizationInstructorLocal(login, password); return true; } @@ -333,7 +333,7 @@ bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login) { - connectorToServer->deAuthorizationInstructorLocal(login); + connectorToServer->sendDeAuthorizationInstructorLocal(login); return true; }