diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index b734ac7..4268b02 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -65,6 +65,8 @@ add_library(InstructorsAndTrainees SHARED connectorToServer/connectortoserver.cpp connectorToServer/connectortoserver.h + connectorToServer/connectortoserver_LocalModelDB.cpp + connectorToServer/connectortoserver_AnswerQueryToDB.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 467f12b..c25f360 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -126,6 +126,12 @@ bool ConnectorToServer::sendQueryBlockAuth(bool block) return true; } +void ConnectorToServer::showVersionSelect() +{ + QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList); + emit sigSendAnswerToServer(answer); +} + void ConnectorToServer::setLoginName(QString name) { versionSelectWidget->setAuthor(name); @@ -153,290 +159,6 @@ void ConnectorToServer::StopConnectToServer() clearListModelDB(); } -QByteArray ConnectorToServer::getListTaskFimArray() -{ - return listTaskFimArray; -} - -QByteArray ConnectorToServer::getListTaskAmmArray() -{ - return listTaskAmmArray; -} - -QList ConnectorToServer::getListInstructors() -{ - return listInstructors; -} - -QList ConnectorToServer::getListTrainees() -{ - return listTrainees; -} - -QList ConnectorToServer::getListGroups() -{ - return listGroups; -} - -QList ConnectorToServer::getListComputers() -{ - return listComputers; -} - -QList ConnectorToServer::getListClassrooms() -{ - return listClassrooms; -} - -QList ConnectorToServer::getListTasksAMMforTrainee(int trainee_id) -{ - if(mapTasksAMM.contains(trainee_id)) - return mapTasksAMM.value(trainee_id); - else - return QList(); -} - -QList ConnectorToServer::getListTasksFIMforTrainee(int trainee_id) -{ - if(mapTasksFIM.contains(trainee_id)) - return mapTasksFIM.value(trainee_id); - else - return QList(); -} - -int ConnectorToServer::getCountTasksAMMforTrainee(int trainee_id) -{ - if(mapTasksAMM.contains(trainee_id)) - return mapTasksAMM.value(trainee_id).count(); - else - return 0; -} - -int ConnectorToServer::getCountTasksFIMforTrainee(int trainee_id) -{ - if(mapTasksFIM.contains(trainee_id)) - return mapTasksFIM.value(trainee_id).count(); - else - return 0; -} - -bool ConnectorToServer::isArchivedInstructor(int id) -{ - for(Instructor instructor : listInstructors) - { - if(instructor.getID() == id) - { - if(instructor.getArchived()) return true; - else return false; - } - } - return false; -} - -bool ConnectorToServer::isAdminInstructor(int id) -{ - for(Instructor instructor : listInstructors) - { - if(instructor.getID() == id) - { - if(instructor.getIsAdmin()) return true; - else return false; - } - } - return false; -} - -bool ConnectorToServer::isLoggedInInstructor(int id) -{ - for(Instructor instructor : listInstructors) - { - if(instructor.getID() == id) - { - if(instructor.getLoggedIn()) return true; - else return false; - } - } - return false; -} - -Instructor ConnectorToServer::getInstructor(int id) -{ - for(Instructor instructor : listInstructors) - { - if(instructor.getID() == id) - return instructor; - } - return Instructor(); -} - -QList ConnectorToServer::getListTraineesInGroup(int id) -{ - QList list; - for(Trainee trainee : listTrainees) - { - if(trainee.getGroup().getID() == id) - list.append(trainee); - } - return list; -} - -bool ConnectorToServer::isArchivedTrainee(int id) -{ - for(Trainee trainee : listTrainees) - { - if(trainee.getID() == id) - { - if(trainee.getArchived()) return true; - else return false; - } - } - return false; -} - -bool ConnectorToServer::isLoggedInTrainee(int id) -{ - for(Trainee trainee : listTrainees) - { - if(trainee.getID() == id) - { - if(trainee.getLoggedIn()) return true; - else return false; - } - } - return false; -} - -Trainee ConnectorToServer::getTrainee(int id) -{ - for(Trainee trainee : listTrainees) - { - if(trainee.getID() == id) - return trainee; - } - return Trainee(); -} - -Group ConnectorToServer::getGroup(int id) -{ - for(Group group : listGroups) - { - if(group.getID() == id) - return group; - } - return Group(); -} - -int ConnectorToServer::getIdTraineeByLogin(QString login) -{ - for(Trainee trainee : listTrainees) - { - if(trainee.getLogin() == login) - return trainee.getID(); - } - return 0; -} - -int ConnectorToServer::getIdInstructorByLogin(QString login) -{ - for(Instructor instructor : listInstructors) - { - if(instructor.getLogin() == login) - return instructor.getID(); - } - return 0; -} - -void ConnectorToServer::showVersionSelect() -{ - QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList); - emit sigSendAnswerToServer(answer); -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList listInstructors) -{ - this->listInstructors = listInstructors; - emit signal_UpdateDB(true, false); - - QList listUsers; - for(Instructor instructor : listInstructors) - { - listUsers.append(instructor); - } - emit signal_reInitMessangerByUsers(listUsers); -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList listGroups) -{ - this->listGroups = listGroups; - emit signal_UpdateDB(false, true); -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList listTrainees) -{ - this->listTrainees = listTrainees; - emit signal_UpdateDB(false, true); - - QList listUsers; - for(Trainee trainee : listTrainees) - { - listUsers.append(trainee); - } - emit signal_reInitMessangerByUsers(listUsers); -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList listComputers) -{ - this->listComputers = listComputers; - //emit signal_UpdateDB(false, true); //TODO -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList listClassrooms) -{ - this->listClassrooms = listClassrooms; - //emit signal_UpdateDB(false, true); //TODO -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList listTasks, int trainee_id) -{ - //Удаляем старые задачи этого обучаемого - mapTasksAMM.remove(trainee_id); - - //Добавляем новые - mapTasksAMM.insert(trainee_id, listTasks); - - emit signal_UpdateTasksAMMforTrainee(trainee_id); -} - -void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList listTasks, int trainee_id) -{ - //Удаляем старые задачи этого обучаемого - mapTasksFIM.remove(trainee_id); - - //Добавляем новые - mapTasksFIM.insert(trainee_id, listTasks); - - emit signal_UpdateTasksFIMforTrainee(trainee_id); -} - -void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) -{ - this->listTaskFimArray = array; - emit signal_UpdateTasksFIM(); -} - -void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array) -{ - this->listTaskAmmArray = array; - emit signal_UpdateTasksAMM(); - - //Запрос старых оффлайн-сообщений - if(!fl_GetedOfflineMessages) - { - sendClientNotify(cmd_GetOfflineMessages); - fl_GetedOfflineMessages = true; - } -} - void ConnectorToServer::slot_sendMessage(ClientMessage clientMessage) { sendMessage(clientMessage); @@ -526,20 +248,6 @@ void ConnectorToServer::createObjects() connectionThread->setPriority(QThread::HighestPriority); } -void ConnectorToServer::clearListModelDB() -{ - listInstructors.clear(); - listGroups.clear(); - listTrainees.clear(); - listComputers.clear(); - listClassrooms.clear(); - mapTasksAMM.clear(); - mapTasksFIM.clear(); - - listTaskFimArray.clear(); - listTaskAmmArray.clear(); -} - SendSystem *ConnectorToServer::getSendSystem() const { return sendSystem; diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index 4ef8def..67a28e8 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -3,6 +3,7 @@ #include #include +#include #include #include "Core\tcpclient.h" #include "Core\dataparser.h" @@ -19,10 +20,12 @@ class ConnectorToServer : public QObject { Q_OBJECT + public: explicit ConnectorToServer(QWidget* parentWidget, QObject *parent = nullptr); ~ConnectorToServer(); +public: bool authorizationInstructorLocal(QString login, QString password); bool deAuthorizationInstructorLocal(QString login); @@ -32,15 +35,24 @@ public: bool sendQueryTasksXML(QString type); bool sendQueryBlockAuth(bool block); + void showVersionSelect(); + void setLoginName(QString name); + bool sendClientNotify(QString command); + + ServerSettings getServerSettings(); + bool getIsConnected(); + + SendSystem *getSendSystem() const; + ServerAuthorization getServerAuth(){return serverAuth;} + void SetConnectToServer(); void StopConnectToServer(); public: + //Запросы к БД (локальной) QByteArray getListTaskFimArray(); QByteArray getListTaskAmmArray(); -public: - //Запросы к БД (локальной) QList getListInstructors(); QList getListTrainees(); QList getListGroups(); @@ -64,18 +76,13 @@ public: int getIdTraineeByLogin(QString login); int getIdInstructorByLogin(QString login); - void showVersionSelect(); - void setLoginName(QString name); +private: + //Очистка списочной модели БД СУО + void clearListModelDB(); - ServerSettings getServerSettings(); - bool getIsConnected(); - - SendSystem *getSendSystem() const; - ServerAuthorization getServerAuth(){return serverAuth;} - - bool sendClientNotify(QString command); public slots: + //Ответы на запросы к Серверу void slot_AnswerQueryToDB_ListInstructors(QList listInstructors); void slot_AnswerQueryToDB_ListGroups(QList listGroups); void slot_AnswerQueryToDB_ListTrainees(QList listTrainees); @@ -88,6 +95,7 @@ public slots: void slot_AnswerQueryTasksXML_AMM(QByteArray array); void slot_sendMessage(ClientMessage clientMessage); + void slot_showServerList(QList *serverList); void slot_HashReady(); @@ -124,9 +132,6 @@ private: void bindConnection(); void createObjects(); - //Очистка списочной модели БД СУО - void clearListModelDB(); - private: QWidget* parentWidget; QThread *connectionThread; @@ -146,7 +151,6 @@ private: QList listClassrooms; QMap> mapTasksAMM; QMap> mapTasksFIM; - QByteArray listTaskFimArray; QByteArray listTaskAmmArray; @@ -154,6 +158,8 @@ private: ServerAuthorization serverAuth; bool fl_GetedOfflineMessages; + + QMutex mtxAccess; }; #endif // CONNECTORTOSERVER_H diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp new file mode 100644 index 0000000..7933900 --- /dev/null +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver_AnswerQueryToDB.cpp @@ -0,0 +1,86 @@ +#include "connectortoserver.h" + +void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList listInstructors) +{ + this->listInstructors = listInstructors; + emit signal_UpdateDB(true, false); + + QList listUsers; + for(Instructor instructor : listInstructors) + { + listUsers.append(instructor); + } + emit signal_reInitMessangerByUsers(listUsers); +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList listGroups) +{ + this->listGroups = listGroups; + emit signal_UpdateDB(false, true); +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList listTrainees) +{ + this->listTrainees = listTrainees; + emit signal_UpdateDB(false, true); + + QList listUsers; + for(Trainee trainee : listTrainees) + { + listUsers.append(trainee); + } + emit signal_reInitMessangerByUsers(listUsers); +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList listComputers) +{ + this->listComputers = listComputers; + //emit signal_UpdateDB(false, true); //TODO +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList listClassrooms) +{ + this->listClassrooms = listClassrooms; + //emit signal_UpdateDB(false, true); //TODO +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList listTasks, int trainee_id) +{ + //Удаляем старые задачи этого обучаемого + mapTasksAMM.remove(trainee_id); + + //Добавляем новые + mapTasksAMM.insert(trainee_id, listTasks); + + emit signal_UpdateTasksAMMforTrainee(trainee_id); +} + +void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList listTasks, int trainee_id) +{ + //Удаляем старые задачи этого обучаемого + mapTasksFIM.remove(trainee_id); + + //Добавляем новые + mapTasksFIM.insert(trainee_id, listTasks); + + emit signal_UpdateTasksFIMforTrainee(trainee_id); +} + +void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) +{ + this->listTaskFimArray = array; + emit signal_UpdateTasksFIM(); +} + +void ConnectorToServer::slot_AnswerQueryTasksXML_AMM(QByteArray array) +{ + this->listTaskAmmArray = array; + emit signal_UpdateTasksAMM(); + + //Запрос старых оффлайн-сообщений + if(!fl_GetedOfflineMessages) + { + sendClientNotify(cmd_GetOfflineMessages); + fl_GetedOfflineMessages = true; + } +} diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver_LocalModelDB.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver_LocalModelDB.cpp new file mode 100644 index 0000000..c0fff20 --- /dev/null +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver_LocalModelDB.cpp @@ -0,0 +1,209 @@ +#include "connectortoserver.h" + +QByteArray ConnectorToServer::getListTaskFimArray() +{ + QMutexLocker locker(&mtxAccess); + return listTaskFimArray; +} + +QByteArray ConnectorToServer::getListTaskAmmArray() +{ + return listTaskAmmArray; +} + +QList ConnectorToServer::getListInstructors() +{ + return listInstructors; +} + +QList ConnectorToServer::getListTrainees() +{ + return listTrainees; +} + +QList ConnectorToServer::getListGroups() +{ + return listGroups; +} + +QList ConnectorToServer::getListComputers() +{ + return listComputers; +} + +QList ConnectorToServer::getListClassrooms() +{ + return listClassrooms; +} + +QList ConnectorToServer::getListTasksAMMforTrainee(int trainee_id) +{ + if(mapTasksAMM.contains(trainee_id)) + return mapTasksAMM.value(trainee_id); + else + return QList(); +} + +QList ConnectorToServer::getListTasksFIMforTrainee(int trainee_id) +{ + if(mapTasksFIM.contains(trainee_id)) + return mapTasksFIM.value(trainee_id); + else + return QList(); +} + +int ConnectorToServer::getCountTasksAMMforTrainee(int trainee_id) +{ + if(mapTasksAMM.contains(trainee_id)) + return mapTasksAMM.value(trainee_id).count(); + else + return 0; +} + +int ConnectorToServer::getCountTasksFIMforTrainee(int trainee_id) +{ + if(mapTasksFIM.contains(trainee_id)) + return mapTasksFIM.value(trainee_id).count(); + else + return 0; +} + +bool ConnectorToServer::isArchivedInstructor(int id) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getID() == id) + { + if(instructor.getArchived()) return true; + else return false; + } + } + return false; +} + +bool ConnectorToServer::isAdminInstructor(int id) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getID() == id) + { + if(instructor.getIsAdmin()) return true; + else return false; + } + } + return false; +} + +bool ConnectorToServer::isLoggedInInstructor(int id) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getID() == id) + { + if(instructor.getLoggedIn()) return true; + else return false; + } + } + return false; +} + +Instructor ConnectorToServer::getInstructor(int id) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getID() == id) + return instructor; + } + return Instructor(); +} + +QList ConnectorToServer::getListTraineesInGroup(int id) +{ + QList list; + for(Trainee trainee : listTrainees) + { + if(trainee.getGroup().getID() == id) + list.append(trainee); + } + return list; +} + +bool ConnectorToServer::isArchivedTrainee(int id) +{ + for(Trainee trainee : listTrainees) + { + if(trainee.getID() == id) + { + if(trainee.getArchived()) return true; + else return false; + } + } + return false; +} + +bool ConnectorToServer::isLoggedInTrainee(int id) +{ + for(Trainee trainee : listTrainees) + { + if(trainee.getID() == id) + { + if(trainee.getLoggedIn()) return true; + else return false; + } + } + return false; +} + +Trainee ConnectorToServer::getTrainee(int id) +{ + for(Trainee trainee : listTrainees) + { + if(trainee.getID() == id) + return trainee; + } + return Trainee(); +} + +Group ConnectorToServer::getGroup(int id) +{ + for(Group group : listGroups) + { + if(group.getID() == id) + return group; + } + return Group(); +} + +int ConnectorToServer::getIdTraineeByLogin(QString login) +{ + for(Trainee trainee : listTrainees) + { + if(trainee.getLogin() == login) + return trainee.getID(); + } + return 0; +} + +int ConnectorToServer::getIdInstructorByLogin(QString login) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getLogin() == login) + return instructor.getID(); + } + return 0; +} + +void ConnectorToServer::clearListModelDB() +{ + listInstructors.clear(); + listGroups.clear(); + listTrainees.clear(); + listComputers.clear(); + listClassrooms.clear(); + mapTasksAMM.clear(); + mapTasksFIM.clear(); + + listTaskFimArray.clear(); + listTaskAmmArray.clear(); +}