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.h
connectorToServer/connectortoserver_LocalModelDB.cpp
connectorToServer/connectortoserver_AnswerQueryToDB.cpp
connectorToServer/Core/sendsystem.cpp
connectorToServer/Core/sendsystem.h
connectorToServer/Core/dataparser.cpp

View File

@@ -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<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)
{
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;

View File

@@ -3,6 +3,7 @@
#include <QObject>
#include <QMap>
#include <QMutex>
#include <widgets/versionselectwidget.h>
#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<Instructor> getListInstructors();
QList<Trainee> getListTrainees();
QList<Group> 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<Instructor> listInstructors);
void slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups);
void slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees);
@@ -88,6 +95,7 @@ public slots:
void slot_AnswerQueryTasksXML_AMM(QByteArray array);
void slot_sendMessage(ClientMessage clientMessage);
void slot_showServerList(QList<StreamingVersionData*> *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<Classroom> listClassrooms;
QMap<int, QList<TaskAmmFim>> mapTasksAMM;
QMap<int, QList<TaskAmmFim>> mapTasksFIM;
QByteArray listTaskFimArray;
QByteArray listTaskAmmArray;
@@ -154,6 +158,8 @@ private:
ServerAuthorization serverAuth;
bool fl_GetedOfflineMessages;
QMutex mtxAccess;
};
#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();
}