diff --git a/DataBaseLMS/CMakeLists.txt b/DataBaseLMS/CMakeLists.txt index e2eced4..f3f154c 100644 --- a/DataBaseLMS/CMakeLists.txt +++ b/DataBaseLMS/CMakeLists.txt @@ -24,10 +24,13 @@ add_library(DataBaseLMS SHARED task.h classroom.cpp classroom.h + tasksAmmFim.cpp + tasksAmmFim.h ) target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets) target_link_libraries(DataBaseLMS PRIVATE Qt5::Sql) +target_link_libraries(DataBaseLMS PRIVATE Qt5::Xml) target_compile_definitions(DataBaseLMS PRIVATE DATABASELMS_LIBRARY) diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index 668b07e..ecaebaf 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -447,6 +447,28 @@ int DataBaseLMS::updateGroup(Group group) return queryExecInt(queryStr); } +int DataBaseLMS::insertTaskAMM(int id_trainee) +{ + QString queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, trainee_task) " + "VALUES (DEFAULT, DEFAULT, %1) " + "RETURNING tasks_amm.task_id").arg( + QString::number(id_trainee)); + + return queryExecInt(queryStr); +} + +int DataBaseLMS::updateTaskAMM(TaskAmmFim task) +{ + QString queryStr = QString("UPDATE public.tasks_amm SET title = '%1', dm_code = '%2' " + "WHERE task_id = %3 " + "RETURNING tasks_amm.task_id").arg( + task.ammProcedure.title, + task.ammProcedure.dmCode, + QString::number(task.getID()) ); + + return queryExecInt(queryStr); +} + Trainee DataBaseLMS::selectTrainee(int id_trainee) { Trainee trainee; @@ -735,6 +757,7 @@ QList DataBaseLMS::selectTasksOfTrainee(int trainee_id) { QList tasks; + /* QString queryStr = QString("SELECT tasks.task_id, tasks.name " "FROM public.trainees " "JOIN public.trainees_tasks ON trainees_tasks.trainee_id = trainees.trainee_id " @@ -755,6 +778,7 @@ QList DataBaseLMS::selectTasksOfTrainee(int trainee_id) tasks.append(task); } } + */ return tasks; } diff --git a/DataBaseLMS/databaselms.h b/DataBaseLMS/databaselms.h index 98240df..6d73f30 100644 --- a/DataBaseLMS/databaselms.h +++ b/DataBaseLMS/databaselms.h @@ -7,6 +7,7 @@ #include "instructor.h" #include "trainee.h" #include "group.h" +#include "tasksAmmFim.h" class DataBaseLMS { @@ -52,6 +53,10 @@ protected: int deleteGroup(int group_id); int updateGroup(Group group); + //Задача + int insertTaskAMM(int id_trainee); + int updateTaskAMM(TaskAmmFim task); + //Обучаемый Trainee selectTrainee(int id_trainee); QList selectAllTraineesInGroup(int id_group); diff --git a/DataBaseLMS/interfacedatabaselms.cpp b/DataBaseLMS/interfacedatabaselms.cpp index 0767ce2..b02f468 100644 --- a/DataBaseLMS/interfacedatabaselms.cpp +++ b/DataBaseLMS/interfacedatabaselms.cpp @@ -281,6 +281,21 @@ int InterfaceDataBaseLMS::editGroup(Group group) return updateGroup(group); } +int InterfaceDataBaseLMS::newTaskAMM(int id_trainee) +{ + return insertTaskAMM(id_trainee); +} + +int InterfaceDataBaseLMS::delTaskAMM(int id) +{ + return 0; +} + +int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task) +{ + return updateTaskAMM(task); +} + int InterfaceDataBaseLMS::newTrainee(int id_group) { return insertTrainee(id_group); diff --git a/DataBaseLMS/interfacedatabaselms.h b/DataBaseLMS/interfacedatabaselms.h index dd08015..0744b3e 100644 --- a/DataBaseLMS/interfacedatabaselms.h +++ b/DataBaseLMS/interfacedatabaselms.h @@ -69,6 +69,10 @@ public: int delGroup(int id); int editGroup(Group group); + int newTaskAMM(int id_trainee); + int delTaskAMM(int id); + int editTaskAMM(TaskAmmFim task); + int newTrainee(int id_group); int delTrainee(int id); int editTrainee(Trainee trainee); diff --git a/InstructorsAndTrainees/tasks/tasksAmmFim.cpp b/DataBaseLMS/tasksAmmFim.cpp similarity index 96% rename from InstructorsAndTrainees/tasks/tasksAmmFim.cpp rename to DataBaseLMS/tasksAmmFim.cpp index 2ebb064..05d42c3 100644 --- a/InstructorsAndTrainees/tasks/tasksAmmFim.cpp +++ b/DataBaseLMS/tasksAmmFim.cpp @@ -3,6 +3,7 @@ #include #include +int TaskAmmFim::lastID = 1; void TaskAmmFim::initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date) { diff --git a/InstructorsAndTrainees/tasks/tasksAmmFim.h b/DataBaseLMS/tasksAmmFim.h similarity index 89% rename from InstructorsAndTrainees/tasks/tasksAmmFim.h rename to DataBaseLMS/tasksAmmFim.h index 01ee7de..aadeeb8 100644 --- a/InstructorsAndTrainees/tasks/tasksAmmFim.h +++ b/DataBaseLMS/tasksAmmFim.h @@ -3,8 +3,9 @@ #include #include +#include "DataBaseLMS_global.h" -class ProcedureID +class DATABASELMS_EXPORT ProcedureID { public: ProcedureID(){}; @@ -16,7 +17,7 @@ public: QString result; // "" - нет результата, "viewed" - процедура изучена (просмотрена при отсутствующем сценарии), "completed" - выполнена (в т.ч. режим "контроль" сценария) }; -class MalfunctionSign // признак неисправности +class DATABASELMS_EXPORT MalfunctionSign // признак неисправности { public: MalfunctionSign(){}; @@ -29,7 +30,7 @@ public: QString description; // описание (напр. "ЭРРД, 25, DOOR_FAIL_TO_CLOSE" - для БСТО) }; -class Malfunction // неисправность +class DATABASELMS_EXPORT Malfunction // неисправность { public: Malfunction(){}; @@ -44,7 +45,7 @@ public: QList malfunctionSigns;// список соответствующих неисправности признаков }; -class FIMReportItem +class DATABASELMS_EXPORT FIMReportItem { public: FIMReportItem(){}; @@ -54,7 +55,7 @@ public: ProcedureID procedure; // ссылка на процедуру, при необходимости }; -class FIMReport +class DATABASELMS_EXPORT FIMReport { public: FIMReport(){}; @@ -63,7 +64,7 @@ public: QList itemList; }; -class TaskAmmFim +class DATABASELMS_EXPORT TaskAmmFim { public: TaskAmmFim(){}; @@ -71,6 +72,10 @@ public: public: void initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date); void addMalfunction(Malfunction malfunction); + +public: + void setID(int id){this->id = id;}; + int getID(){return id;}; public: int id; // для идентификации в БД @@ -97,6 +102,8 @@ public: // fim: QList malfunctionList; // список неисправностей FIMReport report; // отчет по выполнению "fim" + + static int lastID; }; #endif // TASKSAMMFIM_H diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index b564953..cae50e6 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -78,8 +78,8 @@ add_library(InstructorsAndTrainees SHARED tasks/fimtaskswidget.cpp tasks/fimtaskswidget.h tasks/fimtaskswidget.ui - tasks/tasksAmmFim.cpp - tasks/tasksAmmFim.h + #tasks/tasksAmmFim.cpp + #tasks/tasksAmmFim.h widgets/newversionwidget.cpp widgets/newversionwidget.h widgets/newversionwidget.ui diff --git a/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp b/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp index 82ebfbf..acf46b5 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/dataparser.cpp @@ -6,6 +6,7 @@ #include "instructor.h" #include "trainee.h" #include "group.h" +#include "tasksAmmFim.h" #include "streamingversiondata.h" #include @@ -171,6 +172,23 @@ void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void xmlWriter.writeAttribute("name", group->getName()); } } + else if(queryToDB->typeQuery == TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE) + { + TaskAmmFim* task = (TaskAmmFim*)data; + if(task) + { + xmlWriter.writeAttribute("title", task->ammProcedure.title); + xmlWriter.writeAttribute("dmCode", task->ammProcedure.dmCode); + } + } + else if(queryToDB->typeQuery == TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE) + { + TaskAmmFim* task = (TaskAmmFim*)data; + if(task) + { + xmlWriter.writeAttribute("title", task->title); + } + } } xmlWriter.writeEndElement(); diff --git a/InstructorsAndTrainees/connectorToServer/Datas.h b/InstructorsAndTrainees/connectorToServer/Datas.h index 0d2573f..ef8c985 100644 --- a/InstructorsAndTrainees/connectorToServer/Datas.h +++ b/InstructorsAndTrainees/connectorToServer/Datas.h @@ -52,7 +52,9 @@ enum TypeQueryToDB{ TYPE_QUERY_EDIT_GROUP, TYPE_QUERY_NEW_TRAINEE, TYPE_QUERY_DEL_TRAINEE, - TYPE_QUERY_EDIT_TRAINEE + TYPE_QUERY_EDIT_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE }; class ClientQueryToDB{ diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 1634632..6f6a4c2 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -43,6 +43,13 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer); + ammTasksWidget = new AMMtasksWidget(connectorToServer, this); + fimTasksWidget = new FIMtasksWidget(connectorToServer, this); + + connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); + connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI); + connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, fimTasksWidget, &FIMtasksWidget::slot_traineeSelected); + connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, ammTasksWidget, &AMMtasksWidget::slot_traineeSelected); messangerWidget = new MessangerWidget(this); connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerWidget,&MessangerWidget::slot_InitMessanger); @@ -52,12 +59,6 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(connectorToServer,&ConnectorToServer::signal_msgFromClientReady,messangerWidget,&MessangerWidget::slot_msgFromClientReady); - ammTasksWidget = new AMMtasksWidget(connectorToServer, this); - fimTasksWidget = new FIMtasksWidget(connectorToServer, this); - - connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksFIM, fimTasksWidget, &FIMtasksWidget::slot_NeedUpdateUI); - connect(connectorToServer, &ConnectorToServer::signal_UpdateTasksAMM, ammTasksWidget, &AMMtasksWidget::slot_NeedUpdateUI); - ui->horizontalLayout_3->addWidget(viewerTrainees); ui->horizontalLayout_3->addWidget(messangerWidget); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index f817aea..d334931 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -8,7 +8,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent) : QWidget(parent), ui(new Ui::AMMtasksWidget), - connectorToServer(connectorToServer) + connectorToServer(connectorToServer), + loginTraineeSelected("") { ui->setupUi(this); @@ -18,6 +19,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, QWidget *pa connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidget_currentItemChanged); preparationTreeWidget(); + + ui->btnAssignTaskToTrainee->setEnabled(false); } AMMtasksWidget::~AMMtasksWidget() @@ -45,17 +48,21 @@ void AMMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, PM* PMmodul = static_cast(module); type = "PM"; code = PMmodul->pmCode(); + ui->btnAssignTaskToTrainee->setEnabled(false); } else { DM* DMmodul = static_cast(module); type = "DM"; code = DMmodul->dmCode(); + ui->btnAssignTaskToTrainee->setEnabled(true); } ui->label->setText(type + " Code"); ui->editCode->setText(code); } + else + ui->btnAssignTaskToTrainee->setEnabled(false); } void AMMtasksWidget::slot_NeedUpdateUI() @@ -63,6 +70,11 @@ void AMMtasksWidget::slot_NeedUpdateUI() loadTasksAMM(); } +void AMMtasksWidget::slot_traineeSelected(QString login) +{ + loginTraineeSelected = login; +} + void AMMtasksWidget::loadTasksAMM() { //Обновление дерева @@ -291,3 +303,35 @@ void AMMtasksWidget::on_btnUpdateTasks_clicked() { connectorToServer->sendQueryTasksXML("amm"); } + +void AMMtasksWidget::on_btnAssignTaskToTrainee_clicked() +{ + QTreeWidgetItem *current = treeWidget->currentItem(); + + if(current == nullptr) + return; + + int id = current->text(ColumnsTree::clmn_ID).toInt(); + + Module* module = searchModuleByID(id); + + if(module) + { + if(module->getType() == ModuleType::TYPE_DM) + { + QString dmCode = ""; + QString techName = ""; + DM* DMmodul = static_cast(module); + dmCode = DMmodul->dmCode(); + techName = DMmodul->getLangStructRus().techName; + + int trainee_id = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); + + TaskAmmFim taskNew; + taskNew.ammProcedure.title = techName; + taskNew.ammProcedure.dmCode = dmCode; + + connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, trainee_id, &taskNew); + } + } +} diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.h b/InstructorsAndTrainees/tasks/ammtaskswidget.h index b28d278..216f1b7 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.h +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.h @@ -29,9 +29,13 @@ private Q_SLOTS: void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); + void on_btnAssignTaskToTrainee_clicked(); + public Q_SLOTS: //Слот обработки сигнала необходимости обновления интерфейса void slot_NeedUpdateUI(); + //слот обработки сигнала о выборе обучаемого + void slot_traineeSelected(QString login); private: void loadAMMtasksFromXML(QByteArray array); @@ -54,6 +58,7 @@ private: private: QList listAllModules; + QString loginTraineeSelected; }; #endif // AMMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.ui b/InstructorsAndTrainees/tasks/ammtaskswidget.ui index 97a4b02..b23e553 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.ui +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.ui @@ -54,7 +54,14 @@ - ... + Update List + + + + + + + Assign task diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index f9c225e..caf7049 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -9,24 +9,55 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, QWidget *parent) : QWidget(parent), ui(new Ui::FIMtasksWidget), - connectorToServer(connectorToServer) + connectorToServer(connectorToServer), + loginTraineeSelected("") { ui->setupUi(this); treeWidget = new QTreeWidget(); ui->horizontalLayout_1->addWidget(treeWidget); + connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidget_currentItemChanged); + preparationTreeWidget(); + + ui->btnAssignTaskToTrainee->setEnabled(false); } FIMtasksWidget::~FIMtasksWidget() { + + deleteAllTaskAmmFim(); delete ui; } +void FIMtasksWidget::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) +{ + if(current == nullptr) + return; + + QString code = ""; + + QTreeWidgetItem *treeItemParent = current->parent(); + if(treeItemParent == nullptr) + {//Выбрана задача + int id = current->text(ColumnsTree::clmn_ID).toInt(); + + TaskAmmFim* task = getTaskByID(id); + + code = task->title; + + ui->btnAssignTaskToTrainee->setEnabled(true); + } + else + ui->btnAssignTaskToTrainee->setEnabled(false); + + ui->editCode->setText(code); +} + void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array) { - listTaskAmmFim.clear(); + deleteAllTaskAmmFim(); QDomDocument docTasksDOM; @@ -47,9 +78,10 @@ void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array) if(name == "task") { - TaskAmmFim task; + TaskAmmFim* task = nullptr; + task = new TaskAmmFim(); - task.initialize(nodeMap.namedItem("id").nodeValue().toInt(), + task->initialize(/*nodeMap.namedItem("id").nodeValue().toInt()*/ TaskAmmFim::lastID++, nodeMap.namedItem("type").nodeValue(), nodeMap.namedItem("title").nodeValue(), nodeMap.namedItem("status").nodeValue(), @@ -92,7 +124,7 @@ void FIMtasksWidget::loadFIMtasksFromXML(QByteArray array) }while(! (signElement = signElement.nextSiblingElement()).isNull()); } - task.addMalfunction(malfunction); + task->addMalfunction(malfunction); } }while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull()); } @@ -107,21 +139,21 @@ void FIMtasksWidget::fillTree() { for(int i = 0; i < listTaskAmmFim.count(); i++) {/*Задачи*/ - TaskAmmFim task = listTaskAmmFim.at(i); + TaskAmmFim* task = listTaskAmmFim.at(i); QTreeWidgetItem* itemTask = new QTreeWidgetItem(); - itemTask->setText(0, task.title); - itemTask->setText(1, QString::number(task.id)); + itemTask->setText(0, task->title); + itemTask->setText(1, QString::number(task->id)); itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable); itemTask->setCheckState(0, Qt::Checked); itemTask->setIcon(0, QIcon(":/resources/icons/procedure.png")); treeWidget->addTopLevelItem(itemTask); - for (int j = 0; j < task.malfunctionList.count(); j++) + for (int j = 0; j < task->malfunctionList.count(); j++) {/*Неисправности*/ - Malfunction malfunction = task.malfunctionList.at(j); + Malfunction malfunction = task->malfunctionList.at(j); QTreeWidgetItem* itemMalfunction = new QTreeWidgetItem(); @@ -172,6 +204,11 @@ void FIMtasksWidget::slot_NeedUpdateUI() loadTasksFIM(); } +void FIMtasksWidget::slot_traineeSelected(QString login) +{ + loginTraineeSelected = login; +} + void FIMtasksWidget::loadTasksFIM() { //Обновление дерева @@ -184,7 +221,49 @@ void FIMtasksWidget::loadTasksFIM() fillTree(); } +TaskAmmFim* FIMtasksWidget::getTaskByID(int id) +{ + for(int i = 0; i < listTaskAmmFim.count(); i++) + {/*Задачи*/ + TaskAmmFim* task = listTaskAmmFim.at(i); + if(task->id == id) + return task; + } + + return nullptr; +} + +void FIMtasksWidget::deleteAllTaskAmmFim() +{ + for(TaskAmmFim* task: listTaskAmmFim) + delete task; + + listTaskAmmFim.clear(); +} + void FIMtasksWidget::on_btnUpdateTasks_clicked() { connectorToServer->sendQueryTasksXML("fim"); } + +void FIMtasksWidget::on_btnAssignTaskToTrainee_clicked() +{ + QTreeWidgetItem *current = treeWidget->currentItem(); + + if(current == nullptr) + return; + + int id = current->text(ColumnsTree::clmn_ID).toInt(); + + TaskAmmFim* task = getTaskByID(id); + + if(task) + { + int trainee_id = connectorToServer->getIdTraineeByLogin(loginTraineeSelected); + + TaskAmmFim taskNew; + taskNew.title = task->title; + + connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, trainee_id, &taskNew); + } +} diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.h b/InstructorsAndTrainees/tasks/fimtaskswidget.h index df7d975..c55a1a2 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.h +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.h @@ -25,11 +25,16 @@ public: ~FIMtasksWidget(); private Q_SLOTS: + void on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_btnUpdateTasks_clicked(); + void on_btnAssignTaskToTrainee_clicked(); + public Q_SLOTS: //Слот обработки сигнала необходимости обновления интерфейса void slot_NeedUpdateUI(); + //слот обработки сигнала о выборе обучаемого + void slot_traineeSelected(QString login); private: void loadFIMtasksFromXML(QByteArray array); @@ -41,6 +46,9 @@ private: void loadTasksFIM(); + TaskAmmFim* getTaskByID(int id); + void deleteAllTaskAmmFim(); + private: Ui::FIMtasksWidget *ui; ConnectorToServer* connectorToServer; @@ -48,7 +56,8 @@ private: private: QString userName; - QList listTaskAmmFim; + QList listTaskAmmFim; + QString loginTraineeSelected; }; #endif // FIMTASKSWIDGET_H diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.ui b/InstructorsAndTrainees/tasks/fimtaskswidget.ui index 2ceeabe..df023b4 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.ui +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.ui @@ -27,7 +27,14 @@ - ... + Update List + + + + + + + Assign task diff --git a/ServerLMS/Data/typesDataServerClient.h b/ServerLMS/Data/typesDataServerClient.h index 3e6e719..d3f637c 100644 --- a/ServerLMS/Data/typesDataServerClient.h +++ b/ServerLMS/Data/typesDataServerClient.h @@ -71,7 +71,9 @@ enum TypeQueryToDB{ TYPE_QUERY_EDIT_GROUP, TYPE_QUERY_NEW_TRAINEE, TYPE_QUERY_DEL_TRAINEE, - TYPE_QUERY_EDIT_TRAINEE + TYPE_QUERY_EDIT_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, + TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE }; class ClientQueryToDB{ diff --git a/ServerLMS/Systems/Parsers/processparser.cpp b/ServerLMS/Systems/Parsers/processparser.cpp index a907109..aa91cc2 100644 --- a/ServerLMS/Systems/Parsers/processparser.cpp +++ b/ServerLMS/Systems/Parsers/processparser.cpp @@ -1,4 +1,5 @@ #include "processparser.h" +#include "tasksAmmFim.h" ProcessParser::ProcessParser(QObject *parent) : QObject(parent) { @@ -162,6 +163,7 @@ void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client) Instructor instructor; Trainee trainee; Group group; + TaskAmmFim task; void* data = nullptr; /*Перебираем все атрибуты тега*/ @@ -228,6 +230,17 @@ void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client) else if(name == "name") group.setName(value); break; + + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE: + if(name == "title") + task.ammProcedure.title = value; + else if(name == "dmCode") + task.ammProcedure.dmCode = value; + break; + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: + if(name == "title") + task.title = value; + break; }; } } @@ -246,6 +259,10 @@ void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client) case TypeQueryToDB::TYPE_QUERY_EDIT_GROUP: data = &group; break; + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE: + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: + data = &task; + break; }; processingSystem->processingClientQueryToDB(client, queryToDB, id, data); diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index 461b55a..0adbfae 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -227,6 +227,19 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu emit sigAuthChanged(); break; } + + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE: + { + int id_new; + id_new = providerDBLMS->newTaskAMM(id); + if(id_new) + { + (*(TaskAmmFim*)data).setID(id_new); + providerDBLMS->editTaskAMM(*(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 baca6c3..cadfb13 100644 --- a/ServerLMS/providerdblms.cpp +++ b/ServerLMS/providerdblms.cpp @@ -299,3 +299,18 @@ int ProviderDBLMS::editGroup(Group group) { return dbLMS->editGroup(group); } + +int ProviderDBLMS::newTaskAMM(int id_trainee) +{ + return dbLMS->newTaskAMM(id_trainee); +} + +int ProviderDBLMS::delTaskAMM(int id) +{ + return 0; +} + +int ProviderDBLMS::editTaskAMM(TaskAmmFim task) +{ + return dbLMS->editTaskAMM(task); +} diff --git a/ServerLMS/providerdblms.h b/ServerLMS/providerdblms.h index 06fcc75..bf53901 100644 --- a/ServerLMS/providerdblms.h +++ b/ServerLMS/providerdblms.h @@ -4,6 +4,7 @@ #include #include #include "interfacedatabaselms.h" +#include "tasksAmmFim.h" class ProviderDBLMS : public QObject { @@ -41,6 +42,10 @@ public: int delGroup(int id); int editGroup(Group group); + int newTaskAMM(int id_trainee); + int delTaskAMM(int id); + int editTaskAMM(TaskAmmFim task); + Q_SIGNALS: //сигнал о блокировке авторизации void signal_BlockAutorization(bool block);