diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index f5b15b4..ff6b50a 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -573,6 +573,7 @@ int DataBaseLMS::updateTaskFIM(TaskAmmFim task) int DataBaseLMS::deleteTaskFIM(int id_task) { + //TODO доделать удаление malfunction QString queryStr = QString("DELETE FROM public.tasks_fim " "WHERE task_id = %1 " "RETURNING tasks_fim.task_id").arg( @@ -584,8 +585,12 @@ int DataBaseLMS::deleteTaskFIM(int id_task) QList DataBaseLMS::selectTasksFIMofTrainee(int id_trainee) { QList listTasks; + QString queryStr; + bool resBool = false; - QString queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, " + resBool = db->transaction(); + + queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, " "trainees.trainee_id " "FROM public.tasks_fim JOIN public.trainees ON trainees.trainee_id = tasks_fim.trainee_task " "WHERE tasks_fim.trainee_task = %1 " @@ -603,10 +608,45 @@ QList DataBaseLMS::selectTasksFIMofTrainee(int id_trainee) task.setID(query.value(0).toInt()); task.title = query.value(1).toString(); + //Выгребаем все malfunction для этой задачи + queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, " + "tasks_fim.task_id " + "FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.task_fim_malf " + "WHERE malfunctions.task_fim_malf = %1 " + "ORDER BY malfunctions.num ASC").arg( + task.getID()); + + QSqlQuery queryMalf = QSqlQuery(*db); + + if(queryExec(queryStr, &queryMalf)) + { + while (queryMalf.next()) + {//Неисправность + Malfunction malfanction; + + malfanction.num = queryMalf.value(1).toString(); + malfanction.dmCode = queryMalf.value(2).toString(); + malfanction.description = queryMalf.value(3).toString(); + + task.addMalfunction(malfanction); + }; + } + else + { + resBool = db->rollback(); + return QList(); + } + listTasks.append(task); - } + }; + } + else + { + resBool = db->rollback(); + return QList(); } + resBool = db->commit(); return listTasks; } diff --git a/ServerLMS/Systems/Parsers/dbanswerparser.cpp b/ServerLMS/Systems/Parsers/dbanswerparser.cpp index ee3f8cf..f652862 100644 --- a/ServerLMS/Systems/Parsers/dbanswerparser.cpp +++ b/ServerLMS/Systems/Parsers/dbanswerparser.cpp @@ -148,6 +148,15 @@ QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList listNode.appendChild(taskNode); taskNode.toElement().setAttribute("task_id", QString::number(task.getID())); taskNode.toElement().setAttribute("title", task.title); + + for(Malfunction malfunction : task.malfunctionList) + {//Неисправность + QDomNode malfunctionNode = commonDOM.createElement("malfunction"); + taskNode.appendChild(malfunctionNode); + malfunctionNode.toElement().setAttribute("dmCode", malfunction.dmCode); + malfunctionNode.toElement().setAttribute("num", malfunction.num); + malfunctionNode.toElement().setAttribute("description", malfunction.description); + } } dataParser->saveDOMtoXML("ListTasksFIM.xml", &commonDOM);