diff --git a/DOCS/DBschem.png b/DOCS/DBschem.png new file mode 100644 index 0000000..88013a9 Binary files /dev/null and b/DOCS/DBschem.png differ diff --git a/DOCS/Андрей/Без названия.canvas b/DOCS/Андрей/Без названия.canvas index f8c9a9f..74862a0 100644 --- a/DOCS/Андрей/Без названия.canvas +++ b/DOCS/Андрей/Без названия.canvas @@ -1,6 +1,6 @@ { "nodes":[ - {"id":"e78057b035cd1b17","x":-640,"y":-460,"width":1351,"height":760,"type":"file","file":"Pasted image 20251107173042.png"} + {"id":"3e71087c4a5247a0","x":-1134,"y":-740,"width":1494,"height":808,"type":"file","file":"DBschem.png"} ], "edges":[] } \ No newline at end of file diff --git a/DataBaseLMS/databaselms_tasks.cpp b/DataBaseLMS/databaselms_tasks.cpp index 3123609..45fa607 100644 --- a/DataBaseLMS/databaselms_tasks.cpp +++ b/DataBaseLMS/databaselms_tasks.cpp @@ -6,16 +6,51 @@ int DataBaseLMS::insertTaskAMM(TaskAmmFim task, int id_trainee) { + QString queryStr; + bool resBool = false; + + resBool = db->transaction(); + task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки - QString queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, fk_trainee_id) " + queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, fk_trainee_id) " "VALUES ('%1', '%2', %3) " "RETURNING tasks_amm.task_id").arg( task.ammProcedure.title, task.ammProcedure.dmCode, QString::number(id_trainee)); - return queryExecInt(queryStr); + int task_id = queryExecInt(queryStr); + if(!task_id) + { + resBool = db->rollback(); + return 0; + } + + + for(SubProc subProc : task.listSubProc) + { + subProc.setTitle(subProc.getTitle().replace("'", "''")); //Задваиваем одинарные кавычки + + queryStr = QString("INSERT INTO public.subprocs (dm_code, title, canplay, fk_task_amm_id) " + "VALUES ('%1', '%2', '%3', %4) " + "RETURNING subprocs.subproc_id").arg( + subProc.getDmCode(), + subProc.getTitle(), + subProc.getModeListStr(), + QString::number(task_id)); + + int subproc_id = queryExecInt(queryStr); + if(!subproc_id) + { + resBool = db->rollback(); + return 0; + } + } + + + resBool = db->commit(); + return task_id; } int DataBaseLMS::updateTaskAMM(TaskAmmFim task)