Refact connectortoserver

This commit is contained in:
2025-10-17 16:12:33 +03:00
parent e2a2d8142c
commit 2d8c13fd1a
5 changed files with 324 additions and 313 deletions

View File

@@ -65,6 +65,8 @@ add_library(InstructorsAndTrainees SHARED
connectorToServer/connectortoserver.cpp connectorToServer/connectortoserver.cpp
connectorToServer/connectortoserver.h connectorToServer/connectortoserver.h
connectorToServer/connectortoserver_LocalModelDB.cpp
connectorToServer/connectortoserver_AnswerQueryToDB.cpp
connectorToServer/Core/sendsystem.cpp connectorToServer/Core/sendsystem.cpp
connectorToServer/Core/sendsystem.h connectorToServer/Core/sendsystem.h
connectorToServer/Core/dataparser.cpp connectorToServer/Core/dataparser.cpp

View File

@@ -126,6 +126,12 @@ bool ConnectorToServer::sendQueryBlockAuth(bool block)
return true; return true;
} }
void ConnectorToServer::showVersionSelect()
{
QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList);
emit sigSendAnswerToServer(answer);
}
void ConnectorToServer::setLoginName(QString name) void ConnectorToServer::setLoginName(QString name)
{ {
versionSelectWidget->setAuthor(name); versionSelectWidget->setAuthor(name);
@@ -153,290 +159,6 @@ void ConnectorToServer::StopConnectToServer()
clearListModelDB(); clearListModelDB();
} }
QByteArray ConnectorToServer::getListTaskFimArray()
{
return listTaskFimArray;
}
QByteArray ConnectorToServer::getListTaskAmmArray()
{
return listTaskAmmArray;
}
QList<Instructor> ConnectorToServer::getListInstructors()
{
return listInstructors;
}
QList<Trainee> ConnectorToServer::getListTrainees()
{
return listTrainees;
}
QList<Group> ConnectorToServer::getListGroups()
{
return listGroups;
}
QList<Computer> ConnectorToServer::getListComputers()
{
return listComputers;
}
QList<Classroom> ConnectorToServer::getListClassrooms()
{
return listClassrooms;
}
QList<TaskAmmFim> ConnectorToServer::getListTasksAMMforTrainee(int trainee_id)
{
if(mapTasksAMM.contains(trainee_id))
return mapTasksAMM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
QList<TaskAmmFim> ConnectorToServer::getListTasksFIMforTrainee(int trainee_id)
{
if(mapTasksFIM.contains(trainee_id))
return mapTasksFIM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
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<Trainee> ConnectorToServer::getListTraineesInGroup(int id)
{
QList<Trainee> 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<Instructor> listInstructors)
{
this->listInstructors = listInstructors;
emit signal_UpdateDB(true, false);
QList<User> listUsers;
for(Instructor instructor : listInstructors)
{
listUsers.append(instructor);
}
emit signal_reInitMessangerByUsers(listUsers);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups)
{
this->listGroups = listGroups;
emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees)
{
this->listTrainees = listTrainees;
emit signal_UpdateDB(false, true);
QList<User> listUsers;
for(Trainee trainee : listTrainees)
{
listUsers.append(trainee);
}
emit signal_reInitMessangerByUsers(listUsers);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers)
{
this->listComputers = listComputers;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms)
{
this->listClassrooms = listClassrooms;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
{
//Удаляем старые задачи этого обучаемого
mapTasksAMM.remove(trainee_id);
//Добавляем новые
mapTasksAMM.insert(trainee_id, listTasks);
emit signal_UpdateTasksAMMforTrainee(trainee_id);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> 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) void ConnectorToServer::slot_sendMessage(ClientMessage clientMessage)
{ {
sendMessage(clientMessage); sendMessage(clientMessage);
@@ -526,20 +248,6 @@ void ConnectorToServer::createObjects()
connectionThread->setPriority(QThread::HighestPriority); 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 SendSystem *ConnectorToServer::getSendSystem() const
{ {
return sendSystem; return sendSystem;

View File

@@ -3,6 +3,7 @@
#include <QObject> #include <QObject>
#include <QMap> #include <QMap>
#include <QMutex>
#include <widgets/versionselectwidget.h> #include <widgets/versionselectwidget.h>
#include "Core\tcpclient.h" #include "Core\tcpclient.h"
#include "Core\dataparser.h" #include "Core\dataparser.h"
@@ -19,10 +20,12 @@
class ConnectorToServer : public QObject class ConnectorToServer : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ConnectorToServer(QWidget* parentWidget, QObject *parent = nullptr); explicit ConnectorToServer(QWidget* parentWidget, QObject *parent = nullptr);
~ConnectorToServer(); ~ConnectorToServer();
public:
bool authorizationInstructorLocal(QString login, QString password); bool authorizationInstructorLocal(QString login, QString password);
bool deAuthorizationInstructorLocal(QString login); bool deAuthorizationInstructorLocal(QString login);
@@ -32,15 +35,24 @@ public:
bool sendQueryTasksXML(QString type); bool sendQueryTasksXML(QString type);
bool sendQueryBlockAuth(bool block); 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 SetConnectToServer();
void StopConnectToServer(); void StopConnectToServer();
public: public:
//Запросы к БД (локальной)
QByteArray getListTaskFimArray(); QByteArray getListTaskFimArray();
QByteArray getListTaskAmmArray(); QByteArray getListTaskAmmArray();
public:
//Запросы к БД (локальной)
QList<Instructor> getListInstructors(); QList<Instructor> getListInstructors();
QList<Trainee> getListTrainees(); QList<Trainee> getListTrainees();
QList<Group> getListGroups(); QList<Group> getListGroups();
@@ -64,18 +76,13 @@ public:
int getIdTraineeByLogin(QString login); int getIdTraineeByLogin(QString login);
int getIdInstructorByLogin(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: public slots:
//Ответы на запросы к Серверу
void slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors); void slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors);
void slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups); void slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups);
void slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees); void slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees);
@@ -88,6 +95,7 @@ public slots:
void slot_AnswerQueryTasksXML_AMM(QByteArray array); void slot_AnswerQueryTasksXML_AMM(QByteArray array);
void slot_sendMessage(ClientMessage clientMessage); void slot_sendMessage(ClientMessage clientMessage);
void slot_showServerList(QList<StreamingVersionData*> *serverList); void slot_showServerList(QList<StreamingVersionData*> *serverList);
void slot_HashReady(); void slot_HashReady();
@@ -124,9 +132,6 @@ private:
void bindConnection(); void bindConnection();
void createObjects(); void createObjects();
//Очистка списочной модели БД СУО
void clearListModelDB();
private: private:
QWidget* parentWidget; QWidget* parentWidget;
QThread *connectionThread; QThread *connectionThread;
@@ -146,7 +151,6 @@ private:
QList<Classroom> listClassrooms; QList<Classroom> listClassrooms;
QMap<int, QList<TaskAmmFim>> mapTasksAMM; QMap<int, QList<TaskAmmFim>> mapTasksAMM;
QMap<int, QList<TaskAmmFim>> mapTasksFIM; QMap<int, QList<TaskAmmFim>> mapTasksFIM;
QByteArray listTaskFimArray; QByteArray listTaskFimArray;
QByteArray listTaskAmmArray; QByteArray listTaskAmmArray;
@@ -154,6 +158,8 @@ private:
ServerAuthorization serverAuth; ServerAuthorization serverAuth;
bool fl_GetedOfflineMessages; bool fl_GetedOfflineMessages;
QMutex mtxAccess;
}; };
#endif // CONNECTORTOSERVER_H #endif // CONNECTORTOSERVER_H

View File

@@ -0,0 +1,86 @@
#include "connectortoserver.h"
void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors)
{
this->listInstructors = listInstructors;
emit signal_UpdateDB(true, false);
QList<User> listUsers;
for(Instructor instructor : listInstructors)
{
listUsers.append(instructor);
}
emit signal_reInitMessangerByUsers(listUsers);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups)
{
this->listGroups = listGroups;
emit signal_UpdateDB(false, true);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees)
{
this->listTrainees = listTrainees;
emit signal_UpdateDB(false, true);
QList<User> listUsers;
for(Trainee trainee : listTrainees)
{
listUsers.append(trainee);
}
emit signal_reInitMessangerByUsers(listUsers);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers)
{
this->listComputers = listComputers;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms)
{
this->listClassrooms = listClassrooms;
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
{
//Удаляем старые задачи этого обучаемого
mapTasksAMM.remove(trainee_id);
//Добавляем новые
mapTasksAMM.insert(trainee_id, listTasks);
emit signal_UpdateTasksAMMforTrainee(trainee_id);
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> 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;
}
}

View File

@@ -0,0 +1,209 @@
#include "connectortoserver.h"
QByteArray ConnectorToServer::getListTaskFimArray()
{
QMutexLocker locker(&mtxAccess);
return listTaskFimArray;
}
QByteArray ConnectorToServer::getListTaskAmmArray()
{
return listTaskAmmArray;
}
QList<Instructor> ConnectorToServer::getListInstructors()
{
return listInstructors;
}
QList<Trainee> ConnectorToServer::getListTrainees()
{
return listTrainees;
}
QList<Group> ConnectorToServer::getListGroups()
{
return listGroups;
}
QList<Computer> ConnectorToServer::getListComputers()
{
return listComputers;
}
QList<Classroom> ConnectorToServer::getListClassrooms()
{
return listClassrooms;
}
QList<TaskAmmFim> ConnectorToServer::getListTasksAMMforTrainee(int trainee_id)
{
if(mapTasksAMM.contains(trainee_id))
return mapTasksAMM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
QList<TaskAmmFim> ConnectorToServer::getListTasksFIMforTrainee(int trainee_id)
{
if(mapTasksFIM.contains(trainee_id))
return mapTasksFIM.value(trainee_id);
else
return QList<TaskAmmFim>();
}
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<Trainee> ConnectorToServer::getListTraineesInGroup(int id)
{
QList<Trainee> 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();
}