diff --git a/DataBaseLMS/CMakeLists.txt b/DataBaseLMS/CMakeLists.txt index f3f154c..b9aafce 100644 --- a/DataBaseLMS/CMakeLists.txt +++ b/DataBaseLMS/CMakeLists.txt @@ -26,6 +26,7 @@ add_library(DataBaseLMS SHARED classroom.h tasksAmmFim.cpp tasksAmmFim.h + typeQueryToDB.h ) target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets) diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index ecaebaf..1d9cf40 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -426,12 +426,12 @@ int DataBaseLMS::insertGroup(Group group) return queryExecInt(queryStr); } -int DataBaseLMS::deleteGroup(int group_id) +int DataBaseLMS::deleteGroup(int id_group) { QString queryStr = QString("DELETE FROM public.groups " "WHERE group_id = %1 " "RETURNING groups.group_id").arg( - QString::number(group_id)); + QString::number(id_group)); return queryExecInt(queryStr); } @@ -469,6 +469,47 @@ int DataBaseLMS::updateTaskAMM(TaskAmmFim task) return queryExecInt(queryStr); } +int DataBaseLMS::deleteTaskAMM(int id_task) +{ + QString queryStr = QString("DELETE FROM public.tasks_amm " + "WHERE task_id = %1 " + "RETURNING tasks_amm.task_id").arg( + QString::number(id_task)); + + return queryExecInt(queryStr); +} + +int DataBaseLMS::insertTaskFIM(int id_trainee) +{ + QString queryStr = QString("INSERT INTO public.tasks_fim (title, trainee_task) " + "VALUES (DEFAULT, %1) " + "RETURNING tasks_fim.task_id").arg( + QString::number(id_trainee)); + + return queryExecInt(queryStr); +} + +int DataBaseLMS::updateTaskFIM(TaskAmmFim task) +{ + QString queryStr = QString("UPDATE public.tasks_fim SET title = '%1' " + "WHERE task_id = %2 " + "RETURNING tasks_fim.task_id").arg( + task.title, + QString::number(task.getID()) ); + + return queryExecInt(queryStr); +} + +int DataBaseLMS::deleteTaskFIM(int id_task) +{ + QString queryStr = QString("DELETE FROM public.tasks_fim " + "WHERE task_id = %1 " + "RETURNING tasks_fim.task_id").arg( + QString::number(id_task)); + + return queryExecInt(queryStr); +} + Trainee DataBaseLMS::selectTrainee(int id_trainee) { Trainee trainee; @@ -721,12 +762,12 @@ int DataBaseLMS::insertTrainee(Trainee trainee) return queryExecInt(queryStr); } -int DataBaseLMS::deleteTrainee(int trainee_id) +int DataBaseLMS::deleteTrainee(int id_trainee) { QString queryStr = QString("DELETE FROM public.trainees " "WHERE trainee_id = %1 " "RETURNING trainees.trainee_id").arg( - QString::number(trainee_id)); + QString::number(id_trainee)); return queryExecInt(queryStr); } diff --git a/DataBaseLMS/databaselms.h b/DataBaseLMS/databaselms.h index 6d73f30..6cb61e2 100644 --- a/DataBaseLMS/databaselms.h +++ b/DataBaseLMS/databaselms.h @@ -50,12 +50,17 @@ protected: Group selectGroup(int id_group); int insertGroup(); int insertGroup(Group group); - int deleteGroup(int group_id); + int deleteGroup(int id_group); int updateGroup(Group group); - //Задача + //Задача AMM int insertTaskAMM(int id_trainee); int updateTaskAMM(TaskAmmFim task); + int deleteTaskAMM(int id_task); + //Задача FIM + int insertTaskFIM(int id_trainee); + int updateTaskFIM(TaskAmmFim task); + int deleteTaskFIM(int id_task); //Обучаемый Trainee selectTrainee(int id_trainee); @@ -72,7 +77,7 @@ protected: int insertTrainee(int id_group); int insertTrainee(Trainee trainee); - int deleteTrainee(int trainee_id); + int deleteTrainee(int id_trainee); int updateTrainee(Trainee trainee); QList selectTasksOfTrainee(int trainee_id); diff --git a/DataBaseLMS/interfacedatabaselms.cpp b/DataBaseLMS/interfacedatabaselms.cpp index b02f468..efc302b 100644 --- a/DataBaseLMS/interfacedatabaselms.cpp +++ b/DataBaseLMS/interfacedatabaselms.cpp @@ -288,7 +288,7 @@ int InterfaceDataBaseLMS::newTaskAMM(int id_trainee) int InterfaceDataBaseLMS::delTaskAMM(int id) { - return 0; + return deleteTaskAMM(id); } int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task) @@ -296,6 +296,21 @@ int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task) return updateTaskAMM(task); } +int InterfaceDataBaseLMS::newTaskFIM(int id_trainee) +{ + return insertTaskFIM(id_trainee); +} + +int InterfaceDataBaseLMS::delTaskFIM(int id) +{ + return deleteTaskFIM(id); +} + +int InterfaceDataBaseLMS::editTaskFIM(TaskAmmFim task) +{ + return updateTaskFIM(task); +} + int InterfaceDataBaseLMS::newTrainee(int id_group) { return insertTrainee(id_group); diff --git a/DataBaseLMS/interfacedatabaselms.h b/DataBaseLMS/interfacedatabaselms.h index 0744b3e..cd06584 100644 --- a/DataBaseLMS/interfacedatabaselms.h +++ b/DataBaseLMS/interfacedatabaselms.h @@ -73,6 +73,10 @@ public: int delTaskAMM(int id); int editTaskAMM(TaskAmmFim task); + int newTaskFIM(int id_trainee); + int delTaskFIM(int id); + int editTaskFIM(TaskAmmFim task); + int newTrainee(int id_group); int delTrainee(int id); int editTrainee(Trainee trainee); diff --git a/DataBaseLMS/typeQueryToDB.h b/DataBaseLMS/typeQueryToDB.h new file mode 100644 index 0000000..72b45f0 --- /dev/null +++ b/DataBaseLMS/typeQueryToDB.h @@ -0,0 +1,21 @@ +#ifndef TYPEQUERYTODB_H +#define TYPEQUERYTODB_H + +#include "DataBaseLMS_global.h" + +enum TypeQueryToDB{ + TYPE_QUERY_GET_ALL_LISTS, + TYPE_QUERY_NEW_INSTRUCTOR, + TYPE_QUERY_DEL_INSTRUCTOR, + TYPE_QUERY_EDIT_INSTRUCTOR, + TYPE_QUERY_NEW_GROUP, + TYPE_QUERY_DEL_GROUP, + TYPE_QUERY_EDIT_GROUP, + TYPE_QUERY_NEW_TRAINEE, + TYPE_QUERY_DEL_TRAINEE, + TYPE_QUERY_EDIT_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE +}; + +#endif // TYPEQUERYTODB_H diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index cae50e6..ad4daa0 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -78,6 +78,8 @@ add_library(InstructorsAndTrainees SHARED tasks/fimtaskswidget.cpp tasks/fimtaskswidget.h tasks/fimtaskswidget.ui + tasks/tasktreepreparation.cpp + tasks/tasktreepreparation.h #tasks/tasksAmmFim.cpp #tasks/tasksAmmFim.h widgets/newversionwidget.cpp diff --git a/InstructorsAndTrainees/commonview.h b/InstructorsAndTrainees/commonview.h index ea9e755..157044e 100644 --- a/InstructorsAndTrainees/commonview.h +++ b/InstructorsAndTrainees/commonview.h @@ -39,6 +39,10 @@ public: { this->authComplited = authComplited; } + void clearTree() + { + treeWidget->clear(); + } protected: void setArchiveVisible(bool archiveVisible) diff --git a/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp b/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp index acf46b5..b3ad8c3 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp @@ -54,13 +54,12 @@ void DataParser::createFileDataList(QList fileDataList,QString filenam file.close(); } -void DataParser::createAuthMessage(ClientAutorization *auth) +QByteArray DataParser::createAuthMessage(ClientAutorization *auth) { authPassCache = auth; //кэширование даных авторизации, для сохранения при успешном заходе - QFile file(tempName); - file.open(QIODevice::WriteOnly); - QXmlStreamWriter xmlWriter(&file); + QByteArray array; + QXmlStreamWriter xmlWriter(&array); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); @@ -74,14 +73,13 @@ void DataParser::createAuthMessage(ClientAutorization *auth) xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); - file.close(); + return array; } -void DataParser::createToClientMessage(ToClientMessage *toClientMessage) +QByteArray DataParser::createToClientMessage(ToClientMessage *toClientMessage) { - QFile file(tempName); - file.open(QIODevice::WriteOnly); - QXmlStreamWriter xmlWriter(&file); + QByteArray array; + QXmlStreamWriter xmlWriter(&array); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); @@ -95,16 +93,15 @@ void DataParser::createToClientMessage(ToClientMessage *toClientMessage) xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); - file.close(); + return array; } -void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void* data) +QByteArray DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void* data) { - QFile file(tempName); - file.open(QIODevice::WriteOnly); - QXmlStreamWriter xmlWriter(&file); + QByteArray array; + QXmlStreamWriter xmlWriter(&array); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); @@ -195,14 +192,13 @@ void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); - file.close(); + return array; } -void DataParser::createQueryTasksXMLMessage(QString type) +QByteArray DataParser::createQueryTasksXMLMessage(QString type) { - QFile file(tempName); - file.open(QIODevice::WriteOnly); - QXmlStreamWriter xmlWriter(&file); + QByteArray array; + QXmlStreamWriter xmlWriter(&array); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); @@ -214,14 +210,13 @@ void DataParser::createQueryTasksXMLMessage(QString type) xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); - file.close(); + return array; } -void DataParser::createDeAuthMessage(ClientDeAutorization *deAuth) +QByteArray DataParser::createDeAuthMessage(ClientDeAutorization *deAuth) { - QFile file(tempName); - file.open(QIODevice::WriteOnly); - QXmlStreamWriter xmlWriter(&file); + QByteArray array; + QXmlStreamWriter xmlWriter(&array); xmlWriter.setAutoFormatting(true); xmlWriter.writeStartDocument(); @@ -233,7 +228,7 @@ void DataParser::createDeAuthMessage(ClientDeAutorization *deAuth) xmlWriter.writeEndElement(); xmlWriter.writeEndDocument(); - file.close(); + return array; } diff --git a/InstructorsAndTrainees/connectorToServer/Core/dataparser.h b/InstructorsAndTrainees/connectorToServer/Core/dataparser.h index c0a3406..8e2e85c 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/dataparser.h +++ b/InstructorsAndTrainees/connectorToServer/Core/dataparser.h @@ -21,11 +21,13 @@ public: void createServerSettings(QString server,QString port); void saveClientSettrings(QString language,bool isAutoStart); void createFileDataList(QList fileDataList,QString filename); - void createAuthMessage(ClientAutorization *auth); - void createToClientMessage(ToClientMessage *toClientMessage); - void createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr); - void createQueryTasksXMLMessage(QString type); - void createDeAuthMessage(ClientDeAutorization *deAuth); + + QByteArray createAuthMessage(ClientAutorization *auth); + QByteArray createToClientMessage(ToClientMessage *toClientMessage); + QByteArray createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr); + QByteArray createQueryTasksXMLMessage(QString type); + QByteArray createDeAuthMessage(ClientDeAutorization *deAuth); + void createAuthData(ServerAuthorization *serverAuth); void createAuthDataOffline(QString username,QString pass); void addRunData(QList displays); diff --git a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp index dadaaf7..3c34e5b 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.cpp @@ -31,21 +31,14 @@ void SendSystem::sendDisable() socket->waitForBytesWritten(); } -void SendSystem::sendXMLmsgGUItoServer() +void SendSystem::sendXMLmsgGUItoServer(QByteArray array) { QDataStream stream(socket); stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); - QFile file(tempName); - file.open(QIODevice::ReadOnly); - - QByteArray array = file.readAll(); - stream << PacketType::TYPE_XMLANSWER; stream << array; socket->waitForBytesWritten(); - - file.close(); } void SendSystem::sendFileBlock(QString path) diff --git a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h index 1e22eef..924b411 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h +++ b/InstructorsAndTrainees/connectorToServer/Core/sendsystem.h @@ -14,7 +14,7 @@ class SendSystem :public QObject public: explicit SendSystem(QObject* parent = nullptr); void setSocket(QTcpSocket *socket); - void sendXMLmsgGUItoServer(); + void sendXMLmsgGUItoServer(QByteArray array); void sendDisable(); void sendFileBlock(QString path); void sendFolderBlock(QString path); diff --git a/InstructorsAndTrainees/connectorToServer/Datas.h b/InstructorsAndTrainees/connectorToServer/Datas.h index ef8c985..5f03268 100644 --- a/InstructorsAndTrainees/connectorToServer/Datas.h +++ b/InstructorsAndTrainees/connectorToServer/Datas.h @@ -2,6 +2,7 @@ #define DATAS_H #include +#include "typeQueryToDB.h" class ServerSettings{ public: @@ -41,7 +42,7 @@ class ClientDeAutorization{ public: QString Login; }; - +/* enum TypeQueryToDB{ TYPE_QUERY_GET_ALL_LISTS, TYPE_QUERY_NEW_INSTRUCTOR, @@ -56,6 +57,7 @@ enum TypeQueryToDB{ TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE }; +*/ class ClientQueryToDB{ public: diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index 13dabe1..69e6687 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -28,8 +28,8 @@ bool ConnectorToServer::authorizationInstructorLocal(QString login, QString pass autorization->Password = password; autorization->TypeClient = TypeClientAutorization::TYPE_GUI; - dataParser->createAuthMessage(autorization); - emit signal_sendXMLmsgGUItoServer(); + QByteArray array = dataParser->createAuthMessage(autorization); + emit signal_sendXMLmsgGUItoServer(array); return true; } @@ -44,8 +44,8 @@ bool ConnectorToServer::deAuthorizationInstructorLocal(QString login) ClientDeAutorization *deAutorization = new ClientDeAutorization; deAutorization->Login = login; - dataParser->createDeAuthMessage(deAutorization); - emit signal_sendXMLmsgGUItoServer(); + QByteArray array = dataParser->createDeAuthMessage(deAutorization); + emit signal_sendXMLmsgGUItoServer(array); return true; } @@ -60,8 +60,8 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* dat ClientQueryToDB *queryToDB = new ClientQueryToDB; queryToDB->typeQuery = typeQuery; - dataParser->createQueryToDBMessage(queryToDB, id, data); - emit signal_sendXMLmsgGUItoServer(); + QByteArray array = dataParser->createQueryToDBMessage(queryToDB, id, data); + emit signal_sendXMLmsgGUItoServer(array); return true; } @@ -78,8 +78,8 @@ bool ConnectorToServer::sendMessageForClient(int id, QString login, QString text toClientMessage->Login = login; toClientMessage->Text = text; - dataParser->createToClientMessage(toClientMessage); - emit signal_sendXMLmsgGUItoServer(); + QByteArray array = dataParser->createToClientMessage(toClientMessage); + emit signal_sendXMLmsgGUItoServer(array); return true; } @@ -91,8 +91,8 @@ bool ConnectorToServer::sendQueryTasksXML(QString type) return false; } - dataParser->createQueryTasksXMLMessage(type); - emit signal_sendXMLmsgGUItoServer(); + QByteArray array = dataParser->createQueryTasksXMLMessage(type); + emit signal_sendXMLmsgGUItoServer(array); return true; } diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index 67b06c8..70e0867 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -85,7 +85,7 @@ signals: SendSystem *sendSystem, QThread *thread); - void signal_sendXMLmsgGUItoServer(); + void signal_sendXMLmsgGUItoServer(QByteArray array); void sigLoginResult(ServerAuthorization * serverAuth); void sigDeLoginResult(ServerDeAuthorization * serverDeAuth); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 6f6a4c2..9ca8258 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -1,4 +1,5 @@ #include +#include #include "instructorsandtraineeswidget.h" #include "ui_instructorsandtraineeswidget.h" #include "dialogauthorizationinstructor.h" @@ -26,6 +27,10 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : qRegisterMetaType>("QList"); qRegisterMetaType>("QList"); qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + + qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); connectorToServer = new ConnectorToServer(this); connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult); @@ -38,8 +43,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(viewerInstructors, &ViewerInstructors::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization); connect(viewerTrainees, &ViewerTrainees::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization); - connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); - connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); + //connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); + //connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer); @@ -52,7 +57,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected); messangerWidget = new MessangerWidget(this); - connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger); + //connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger); connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerWidget, &MessangerWidget::slot_traineeSelected); connect(messangerWidget, &MessangerWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged); connect(messangerWidget, &MessangerWidget::signal_msgToClientReady, connectorToServer, &ConnectorToServer::slot_msgToClientReady); @@ -172,7 +177,11 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName); connectorToServer->setLoginName(nameInstructorLoggedInLocal); - QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!")); + + connectorToServer->sendQueryTasksXML("fim"); + connectorToServer->sendQueryTasksXML("amm"); + + //QMessageBox::information(this, tr("Instructor authorization"), tr("Successfully!")); } else { @@ -194,12 +203,12 @@ void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *ser viewerInstructors->setAuthComplited(false); viewerTrainees->setAuthComplited(false); - Q_EMIT signal_NeedUpdateUI(true, false); + //Q_EMIT signal_NeedUpdateUI(true, false); ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor")); updateLabelLoggedInInstructor("",""); - QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!")); + //QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!")); } else { @@ -221,8 +230,18 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) {//Сервер отключен ui->btnConnectionToServer->setEnabled(true); ui->btnAuthorizationInstructor->setEnabled(false); + ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor")); + ui->btnAuthorizationInstructor->setChecked(false); ui->btnSetVersion->hide(); ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); + + viewerTrainees->clearTree(); + viewerInstructors->clearTree(); + + ammTasksWidget->clearTree(); + fimTasksWidget->clearTree(); + + messangerWidget->clear(); } } @@ -282,6 +301,9 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() {//Авторизация Инструктора локальная (Администратора) if(authorizationInstructorDialog(this)) { + connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); + connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); + connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger); } else ui->btnAuthorizationInstructor->setChecked(false); @@ -292,6 +314,17 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() { if(deAuthorizationInstructor(loginInstructorLoggedInLocal)) { + disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); + disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); + disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger); + + viewerTrainees->clearTree(); + viewerInstructors->clearTree(); + + ammTasksWidget->clearTree(); + fimTasksWidget->clearTree(); + + messangerWidget->clear(); } else ui->btnAuthorizationInstructor->setChecked(true); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h index 8488a5b..881a8f0 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -16,6 +16,9 @@ Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) + namespace Ui { class InstructorsAndTraineesWidget; diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index da36b37..6fe6fdd 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -130,6 +130,12 @@ int MessangerWidget::getIndexTab(QString login) return -1; } +void MessangerWidget::clear() +{ + listTrainees.clear(); + actualizationTabsDialogMessenger(); +} + void MessangerWidget::on_btnSend_clicked() { QString text = ui->editMsg->toPlainText(); diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index 48b4c66..b4438e7 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -37,6 +37,8 @@ public: int getIndexTab(QString login); + void clear(); + private slots: void on_btnSend_clicked(); void on_tabWidget_currentChanged(int index); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index d334931..f64fade 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include "ammtaskswidget.h" #include "ui_ammtaskswidget.h" @@ -9,10 +11,17 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa QWidget(parent), ui(new Ui::AMMtasksWidget), connectorToServer(connectorToServer), - loginTraineeSelected("") + treeWidget(nullptr), + loginTraineeSelected(""), + threadPreparation(nullptr), + threadAnimation(nullptr), + taskTreePreparation(nullptr), + waitAnimationWidget(nullptr) { ui->setupUi(this); + qDebug() << "AMMtasksWidget init thread ID " << QThread::currentThreadId(); + treeWidget = new QTreeWidget(); ui->horizontalLayout_1->addWidget(treeWidget); @@ -20,15 +29,36 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa preparationTreeWidget(); - ui->btnAssignTaskToTrainee->setEnabled(false); + ui->btnAssignTaskToTrainee->setEnabled(false); + + threadPreparation = new QThread(); + taskTreePreparation = new TaskTreePreparation(); + taskTreePreparation->moveToThread(threadPreparation); + threadPreparation->start(); + threadPreparation->setPriority(QThread::HighestPriority); + connect(this, &AMMtasksWidget::signal_prepareListItems, taskTreePreparation, &TaskTreePreparation::slot_prepareListItems); + connect(taskTreePreparation, &TaskTreePreparation::signal_listItemsReady, this, &AMMtasksWidget::slot_listItemsReady); + + threadAnimation = new QThread(); + waitAnimationWidget = new WaitAnimationWidget; + QMovie *movie = new QMovie(":/resources/icons/762.gif"); + waitAnimationWidget->setParent(this); + waitAnimationWidget->initialize(movie,this); + waitAnimationWidget->moveToThread(threadAnimation); + threadAnimation->start(); } AMMtasksWidget::~AMMtasksWidget() { - deleteAllModuls(); delete ui; } +void AMMtasksWidget::resizeEvent(QResizeEvent *event) +{ + QSize size = event->size(); + waitAnimationWidget->resize(size); +} + void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) { if(current == nullptr) @@ -67,11 +97,13 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, void AMMtasksWidget::slot_NeedUpdateUI() { + qDebug() << "AMMtasksWidget::slot_NeedUpdateUI thread ID " << QThread::currentThreadId(); loadTasksAMM(); } void AMMtasksWidget::slot_traineeSelected(QString login) { + qDebug() << "AMMtasksWidget::slot_traineeSelected thread ID " << QThread::currentThreadId(); loginTraineeSelected = login; } @@ -80,138 +112,22 @@ void AMMtasksWidget::loadTasksAMM() //Обновление дерева treeWidget->clear(); + waitAnimationWidget->showWithPlay(); + QByteArray array = connectorToServer->getListTaskAmmArray(); - loadAMMtasksFromXML(array); - fillTree(); + signal_prepareListItems(array, &listAllModules); } -void AMMtasksWidget::domElementParser(QDomElement element, Module* moduleParent) +void AMMtasksWidget::slot_listItemsReady(QList listItems) { - QString name; + //Обновление дерева + treeWidget->clear(); - QDomElement childElement = element.firstChildElement(); - if(childElement.isNull()) - return; + for(QTreeWidgetItem * item : listItems) + treeWidget->addTopLevelItem(item); - Module* module = nullptr; - - do - { - name = childElement.nodeName(); - - QDomNamedNodeMap nodeMap = childElement.attributes(); - - if(name == "pm") - { - module = new PM(); - PM* PMmodul = static_cast(module); - - PMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(), - nodeMap.namedItem("pmIssuer").nodeValue(), - nodeMap.namedItem("pmNumber").nodeValue(), - nodeMap.namedItem("pmVolume").nodeValue()); - - if(moduleParent) - { - PMmodul->setParentModule(moduleParent); - - PM* PMmodulParent = static_cast(moduleParent); - PMmodulParent->addChildModule(module); - } - } - else if(name == "dm") - { - module = new DM(); - DM* DMmodul = static_cast(module); - - DMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(), - nodeMap.namedItem("systemDiffCode").nodeValue(), - nodeMap.namedItem("systemCode").nodeValue(), - nodeMap.namedItem("subSystemCode").nodeValue(), - nodeMap.namedItem("subSubSystemCode").nodeValue(), - nodeMap.namedItem("assyCode").nodeValue(), - nodeMap.namedItem("disassyCode").nodeValue(), - nodeMap.namedItem("disassyCodeVariant").nodeValue(), - nodeMap.namedItem("infoCode").nodeValue(), - nodeMap.namedItem("infoCodeVariant").nodeValue(), - nodeMap.namedItem("itemLocationCode").nodeValue()); - - if(moduleParent) - { - DMmodul->setParentModule(moduleParent); - - PM* PMmodulParent = static_cast(moduleParent); - PMmodulParent->addChildModule(module); - } - } - else if(name == "rus" || name == "eng") - { - if(moduleParent) - { - if(moduleParent->getType() == ModuleType::TYPE_PM) - {//PM - PM* PMmodulParent = static_cast(moduleParent); - - if(name == "rus") - PMmodulParent->setLangStructRus(nodeMap.namedItem("title").nodeValue()); - else - PMmodulParent->setLangStructEng(nodeMap.namedItem("title").nodeValue()); - } - else - {//DM - DM* DMmodulParent = static_cast(moduleParent); - - if(name == "rus") - DMmodulParent->setLangStructRus(nodeMap.namedItem("techName").nodeValue(), - nodeMap.namedItem("infoName").nodeValue(), - nodeMap.namedItem("pdf").nodeValue(), - nodeMap.namedItem("bookmark").nodeValue(), - nodeMap.namedItem("xml").nodeValue()); - else - DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(), - nodeMap.namedItem("infoName").nodeValue(), - nodeMap.namedItem("pdf").nodeValue(), - nodeMap.namedItem("bookmark").nodeValue(), - nodeMap.namedItem("xml").nodeValue()); - } - } - - } - - domElementParser(childElement, module); - - if(moduleParent == nullptr) - listAllModules.append(module); - - }while (! (childElement = childElement.nextSiblingElement()).isNull()); -} - -void AMMtasksWidget::loadAMMtasksFromXML(QByteArray array) -{ - deleteAllModuls(); - - QDomDocument docTasksDOM; - - docTasksDOM.setContent(array); - - QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); - if(manifestElement.isNull()) - return; - - domElementParser(manifestElement, nullptr); -} - -void AMMtasksWidget::deleteAllModuls() -{ - for(Module* module: listAllModules) - { - if(module->getType() == ModuleType::TYPE_PM) - delete static_cast(module); - else - delete static_cast(module); - } - listAllModules.clear(); + waitAnimationWidget->hideWithStop(); } Module *AMMtasksWidget::searchModuleByID(int id) @@ -246,59 +162,6 @@ void AMMtasksWidget::reSetHeadTreeWidget() treeWidget->setHeaderLabels(listHeaders); } -void AMMtasksWidget::fillTree() -{ - //Обновление дерева - treeWidget->clear(); - - for(Module* module : listAllModules) - { - addModuleToTreeWidget(module); - } -} - -void AMMtasksWidget::addModuleToTreeWidget(Module *module, QTreeWidgetItem* parentItem) -{ - QTreeWidgetItem* itemModule = nullptr; - - QString text; - QString ID = QString::number(module->getID()); - - if(parentItem) - { - itemModule = new QTreeWidgetItem(); - parentItem->addChild(itemModule); - } - else - { - itemModule = new QTreeWidgetItem(treeWidget); - } - - if(module->getType() == ModuleType::TYPE_PM) - { - PM* PMmodul = static_cast(module); - text = PMmodul->getLangStructRus().title; - - for(Module* module : PMmodul->getListChildModules()) - { - addModuleToTreeWidget(module, itemModule); - } - } - else - { - DM* DMmodul = static_cast(module); - text = DMmodul->getLangStructRus().techName; - - itemModule->setFlags(itemModule->flags() | Qt::ItemIsUserCheckable); - itemModule->setCheckState(0, Qt::Checked); - itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png")); - } - - itemModule->setText(ColumnsTree::clmn_PMorDM, text); - itemModule->setText(ColumnsTree::clmn_ID, ID); -} - - void AMMtasksWidget::on_btnUpdateTasks_clicked() { connectorToServer->sendQueryTasksXML("amm"); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index 216f1b7..73f8fa1 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -6,6 +6,7 @@ #include #include "module.h" #include "connectortoserver.h" +#include "taskTreePreparation.h" namespace Ui { class AMMtasksWidget; @@ -25,10 +26,18 @@ public: explicit AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr); ~AMMtasksWidget(); +public: + void clearTree() + { + treeWidget->clear(); + } + +public: + void resizeEvent(QResizeEvent *event) override; + private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); - void on_btnAssignTaskToTrainee_clicked(); public Q_SLOTS: @@ -38,19 +47,16 @@ public Q_SLOTS: void slot_traineeSelected(QString login); private: - void loadAMMtasksFromXML(QByteArray array); - void domElementParser(QDomElement element, Module* moduleParent); - void deleteAllModuls(); Module* searchModuleByID(int id); - void preparationTreeWidget(); void reSetHeadTreeWidget(); - - void fillTree(); - void addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr); - void loadTasksAMM(); +Q_SIGNALS: + void signal_prepareListItems(QByteArray array, QList* listAllModules); +public Q_SLOTS: + void slot_listItemsReady(QList listItems); + private: Ui::AMMtasksWidget *ui; ConnectorToServer* connectorToServer; @@ -59,6 +65,11 @@ private: private: QList listAllModules; QString loginTraineeSelected; + + QThread* threadPreparation; + QThread* threadAnimation; + TaskTreePreparation* taskTreePreparation; + WaitAnimationWidget *waitAnimationWidget; }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index c55a1a2..3be156c 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -24,6 +24,12 @@ public: explicit FIMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent = nullptr); ~FIMtasksWidget(); +public: + void clearTree() + { + treeWidget->clear(); + } + private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp new file mode 100644 index 0000000..e749139 --- /dev/null +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -0,0 +1,203 @@ +#include +#include +#include "tasktreepreparation.h" + +TaskTreePreparation::TaskTreePreparation(QObject *parent) : + QObject(parent), + listAllModules(nullptr) +{ + qDebug() << "TaskTreePreparation init thread ID " << QThread::currentThreadId(); +} + +TaskTreePreparation::~TaskTreePreparation() +{ + deleteAllModuls(); +} + +QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem) +{ + QTreeWidgetItem* itemModule = nullptr; + + QString text; + QString ID = QString::number(module->getID()); + + itemModule = new QTreeWidgetItem(); + + if(parentItem) + parentItem->addChild(itemModule); + + if(module->getType() == ModuleType::TYPE_PM) + { + PM* PMmodul = static_cast(module); + text = PMmodul->getLangStructRus().title; + + for(Module* module : PMmodul->getListChildModules()) + { + addModuleToTreeWidget(module, itemModule); + } + } + else + { + DM* DMmodul = static_cast(module); + text = DMmodul->getLangStructRus().techName; + + //itemModule->setFlags(itemModule->flags() | Qt::ItemIsUserCheckable); + //itemModule->setCheckState(0, Qt::Checked); + itemModule->setIcon(0, QIcon(":/resources/icons/procedure.png")); + } + + itemModule->setText(0, text); + itemModule->setText(1, ID); + + return itemModule; +} + +void TaskTreePreparation::loadAMMtasksFromXML(QByteArray array) +{ + deleteAllModuls(); + + QDomDocument docTasksDOM; + + docTasksDOM.setContent(array); + + QDomElement manifestElement = docTasksDOM.firstChildElement("manifest"); + if(manifestElement.isNull()) + return; + + domElementParser(manifestElement, nullptr); +} + +void TaskTreePreparation::deleteAllModuls() +{ + if(listAllModules == nullptr) + return; + + for(Module* module: *listAllModules) + { + if(module->getType() == ModuleType::TYPE_PM) + delete static_cast(module); + else + delete static_cast(module); + } + listAllModules->clear(); +} + +void TaskTreePreparation::domElementParser(QDomElement element, Module* moduleParent) +{ + QString name; + + QDomElement childElement = element.firstChildElement(); + if(childElement.isNull()) + return; + + Module* module = nullptr; + + do + { + name = childElement.nodeName(); + + QDomNamedNodeMap nodeMap = childElement.attributes(); + + if(name == "pm") + { + module = new PM(); + PM* PMmodul = static_cast(module); + + PMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(), + nodeMap.namedItem("pmIssuer").nodeValue(), + nodeMap.namedItem("pmNumber").nodeValue(), + nodeMap.namedItem("pmVolume").nodeValue()); + + if(moduleParent) + { + PMmodul->setParentModule(moduleParent); + + PM* PMmodulParent = static_cast(moduleParent); + PMmodulParent->addChildModule(module); + } + } + else if(name == "dm") + { + module = new DM(); + DM* DMmodul = static_cast(module); + + DMmodul->initialize(nodeMap.namedItem("modelIdentCode").nodeValue(), + nodeMap.namedItem("systemDiffCode").nodeValue(), + nodeMap.namedItem("systemCode").nodeValue(), + nodeMap.namedItem("subSystemCode").nodeValue(), + nodeMap.namedItem("subSubSystemCode").nodeValue(), + nodeMap.namedItem("assyCode").nodeValue(), + nodeMap.namedItem("disassyCode").nodeValue(), + nodeMap.namedItem("disassyCodeVariant").nodeValue(), + nodeMap.namedItem("infoCode").nodeValue(), + nodeMap.namedItem("infoCodeVariant").nodeValue(), + nodeMap.namedItem("itemLocationCode").nodeValue()); + + if(moduleParent) + { + DMmodul->setParentModule(moduleParent); + + PM* PMmodulParent = static_cast(moduleParent); + PMmodulParent->addChildModule(module); + } + } + else if(name == "rus" || name == "eng") + { + if(moduleParent) + { + if(moduleParent->getType() == ModuleType::TYPE_PM) + {//PM + PM* PMmodulParent = static_cast(moduleParent); + + if(name == "rus") + PMmodulParent->setLangStructRus(nodeMap.namedItem("title").nodeValue()); + else + PMmodulParent->setLangStructEng(nodeMap.namedItem("title").nodeValue()); + } + else + {//DM + DM* DMmodulParent = static_cast(moduleParent); + + if(name == "rus") + DMmodulParent->setLangStructRus(nodeMap.namedItem("techName").nodeValue(), + nodeMap.namedItem("infoName").nodeValue(), + nodeMap.namedItem("pdf").nodeValue(), + nodeMap.namedItem("bookmark").nodeValue(), + nodeMap.namedItem("xml").nodeValue()); + else + DMmodulParent->setLangStructEng(nodeMap.namedItem("techName").nodeValue(), + nodeMap.namedItem("infoName").nodeValue(), + nodeMap.namedItem("pdf").nodeValue(), + nodeMap.namedItem("bookmark").nodeValue(), + nodeMap.namedItem("xml").nodeValue()); + } + } + + } + + domElementParser(childElement, module); + + if(moduleParent == nullptr) + listAllModules->append(module); + + }while (! (childElement = childElement.nextSiblingElement()).isNull()); +} + +void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList* listAllModules) +{ + qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId(); + + this->listAllModules = listAllModules; + + loadAMMtasksFromXML(array); + + listItems.clear(); + + for(Module* module : *this->listAllModules) + { + QTreeWidgetItem* item = addModuleToTreeWidget(module); + listItems.append(item); + } + + Q_EMIT signal_listItemsReady(listItems); +} diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.h b/InstructorsAndTrainees/tasks/tasktreepreparation.h new file mode 100644 index 0000000..1f9bc31 --- /dev/null +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.h @@ -0,0 +1,33 @@ +#ifndef TASKTREEPREPARATION_H +#define TASKTREEPREPARATION_H + +#include +#include +#include +#include "module.h" + +class TaskTreePreparation : public QObject +{ + Q_OBJECT +public: + explicit TaskTreePreparation(QObject *parent = nullptr); + ~TaskTreePreparation(); + +private: + QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr); + void loadAMMtasksFromXML(QByteArray array); + void domElementParser(QDomElement element, Module* moduleParent); + void deleteAllModuls(); + +public Q_SLOTS: + void slot_prepareListItems(QByteArray array, QList* listAllModules); + +Q_SIGNALS: + void signal_listItemsReady(QList listItems); + +private: + QList listItems; + QList* listAllModules; +}; + +#endif // TASKTREEPREPARATION_H diff --git a/InstructorsAndTrainees/widgets/waitanimationwidget.cpp b/InstructorsAndTrainees/widgets/waitanimationwidget.cpp index 547a79f..f226429 100644 --- a/InstructorsAndTrainees/widgets/waitanimationwidget.cpp +++ b/InstructorsAndTrainees/widgets/waitanimationwidget.cpp @@ -29,6 +29,11 @@ void WaitAnimationWidget::hideWithStop() loadingMovie->stop(); } +void WaitAnimationWidget::resize(QSize size) +{ + setFixedSize(size); +} + WaitAnimationWidget::~WaitAnimationWidget() { delete ui; diff --git a/InstructorsAndTrainees/widgets/waitanimationwidget.h b/InstructorsAndTrainees/widgets/waitanimationwidget.h index e9ea6a9..827ee99 100644 --- a/InstructorsAndTrainees/widgets/waitanimationwidget.h +++ b/InstructorsAndTrainees/widgets/waitanimationwidget.h @@ -17,6 +17,7 @@ public: void initialize(QMovie *movie,QWidget *parent); void showWithPlay(); void hideWithStop(); + void resize(QSize size); ~WaitAnimationWidget(); private: diff --git a/ServerLMS/Data/typesDataServerClient.h b/ServerLMS/Data/typesDataServerClient.h index d3f637c..beee14e 100644 --- a/ServerLMS/Data/typesDataServerClient.h +++ b/ServerLMS/Data/typesDataServerClient.h @@ -3,6 +3,7 @@ #include #include +#include "typeQueryToDB.h" #define NOTIFY_SERVER_END "END" #define NOTIFY_SERVER_BLOCKED "BLOCKED" @@ -60,7 +61,7 @@ class ClientDeAutorization public: QString Login; }; - +/* enum TypeQueryToDB{ TYPE_QUERY_GET_ALL_LISTS, TYPE_QUERY_NEW_INSTRUCTOR, @@ -75,6 +76,7 @@ enum TypeQueryToDB{ TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE }; +*/ class ClientQueryToDB{ public: diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index 0adbfae..9acc099 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -240,6 +240,19 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu //emit sigTasksChanged(); break; } + + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: + { + int id_new; + id_new = providerDBLMS->newTaskFIM(id); + if(id_new) + { + (*(TaskAmmFim*)data).setID(id_new); + providerDBLMS->editTaskFIM(*(TaskAmmFim*)data); + } + //emit sigTasksChanged(); + break; + } } //client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_DB_LIST_INSTRUCTORS); diff --git a/ServerLMS/providerdblms.cpp b/ServerLMS/providerdblms.cpp index cadfb13..8a137bc 100644 --- a/ServerLMS/providerdblms.cpp +++ b/ServerLMS/providerdblms.cpp @@ -307,10 +307,25 @@ int ProviderDBLMS::newTaskAMM(int id_trainee) int ProviderDBLMS::delTaskAMM(int id) { - return 0; + return dbLMS->delTaskAMM(id); } int ProviderDBLMS::editTaskAMM(TaskAmmFim task) { return dbLMS->editTaskAMM(task); } + +int ProviderDBLMS::newTaskFIM(int id_trainee) +{ + return dbLMS->newTaskFIM(id_trainee); +} + +int ProviderDBLMS::delTaskFIM(int id) +{ + return dbLMS->delTaskFIM(id); +} + +int ProviderDBLMS::editTaskFIM(TaskAmmFim task) +{ + return dbLMS->editTaskFIM(task); +} diff --git a/ServerLMS/providerdblms.h b/ServerLMS/providerdblms.h index bf53901..852c90a 100644 --- a/ServerLMS/providerdblms.h +++ b/ServerLMS/providerdblms.h @@ -46,6 +46,10 @@ public: int delTaskAMM(int id); int editTaskAMM(TaskAmmFim task); + int newTaskFIM(int id_trainee); + int delTaskFIM(int id); + int editTaskFIM(TaskAmmFim task); + Q_SIGNALS: //сигнал о блокировке авторизации void signal_BlockAutorization(bool block);