mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Рефакт users 1
This commit is contained in:
@@ -5,6 +5,10 @@ common_info_for_project(DataBaseLMS)
|
||||
add_library(DataBaseLMS SHARED
|
||||
DataBaseLMS_global.h
|
||||
databaselms.cpp
|
||||
databaselms_tasks.cpp
|
||||
databaselms_groups.cpp
|
||||
databaselms_instructors.cpp
|
||||
databaselms_trainees.cpp
|
||||
databaselms.h
|
||||
interfacedatabaselms.cpp
|
||||
interfacedatabaselms.h
|
||||
@@ -28,6 +32,7 @@ add_library(DataBaseLMS SHARED
|
||||
timingoftrainee.cpp
|
||||
timingoftrainee.h
|
||||
contactModel.h
|
||||
resources.qrc
|
||||
)
|
||||
|
||||
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <QSqlDatabase>
|
||||
#include <QMutex>
|
||||
#include <QWidget>
|
||||
|
||||
#include "instructor.h"
|
||||
#include "trainee.h"
|
||||
@@ -25,9 +26,13 @@ public:
|
||||
class DataBaseLMS
|
||||
{
|
||||
public:
|
||||
DataBaseLMS();
|
||||
DataBaseLMS(QWidget *ownerWidget);
|
||||
~DataBaseLMS();
|
||||
|
||||
public:
|
||||
const QString TypeUserDBInstructor = "instructor";
|
||||
const QString TypeUserDBTrainee = "trainee";
|
||||
|
||||
protected:
|
||||
//Подключение
|
||||
bool createConnection();
|
||||
@@ -38,12 +43,8 @@ protected:
|
||||
bool transactionBegin();
|
||||
bool transactionEnd();
|
||||
|
||||
//Списки
|
||||
QList<Instructor> selectAllInstructors();
|
||||
QList<Trainee> selectAllTrainees();
|
||||
QList<Group> selectAllGroups();
|
||||
|
||||
//Инструктор
|
||||
QList<Instructor> selectAllInstructors();
|
||||
Instructor selectInstructor(int id_instructor);
|
||||
int selectInstructorID(QString login, QString password = QStringLiteral(""));
|
||||
QString selectInstructorNameByLogin(QString login);
|
||||
@@ -53,19 +54,42 @@ protected:
|
||||
int updateInstructorLoggedIn(int id_instructor, bool loggedIn);
|
||||
bool updateAllInstructorsLoggedIn(bool loggedIn);
|
||||
int updateInstructorArchived(int id_instructor, bool archived);
|
||||
|
||||
int insertInstructor();
|
||||
int insertInstructor(Instructor instructor);
|
||||
int deleteInstructor(int id_instructor);
|
||||
int updateInstructor(Instructor instructor);
|
||||
|
||||
//Группа
|
||||
QList<Group> selectAllGroups();
|
||||
Group selectGroup(int id_group);
|
||||
int insertGroup();
|
||||
int insertGroup(Group group);
|
||||
int deleteGroup(int id_group);
|
||||
int updateGroup(Group group);
|
||||
|
||||
//Обучаемый
|
||||
QList<Trainee> selectAllTrainees();
|
||||
Trainee selectTrainee(int id_trainee);
|
||||
QList<Trainee> selectAllTraineesInGroup(int id_group);
|
||||
int selectTraineeID(QString login, QString password = QStringLiteral(""));
|
||||
QString selectTraineeNameByLogin(QString login);
|
||||
QString selectTraineeNameOnComputer(QString computer_name);
|
||||
Trainee selectTraineeOnComputer(QString computer_name);
|
||||
bool selectTraineeArchived(int id_trainee);
|
||||
bool selectTraineeLoggedIn(int id_trainee);
|
||||
int updateTraineeLoggedIn(int id_trainee, bool loggedIn);
|
||||
bool updateAllTraineesLoggedIn(bool loggedIn);
|
||||
int updateTraineeArchived(int id_trainee, bool archived);
|
||||
int insertTrainee(int id_group);
|
||||
int insertTrainee(Trainee trainee);
|
||||
int deleteTrainee(int id_trainee);
|
||||
int updateTrainee(Trainee trainee);
|
||||
|
||||
//Тайминг
|
||||
int insertTimingTrainee(int id_trainee);
|
||||
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
|
||||
TimingOfTrainee selectTimingTrainee(int id_trainee);
|
||||
|
||||
//Задача AMM
|
||||
int insertTaskAMM(TaskAmmFim task, int id_trainee);
|
||||
int updateTaskAMM(TaskAmmFim task);
|
||||
@@ -80,33 +104,9 @@ protected:
|
||||
int deleteTaskFIM(int id_task);
|
||||
QList<TaskAmmFim> selectTasksFIMofTrainee(int id_trainee);
|
||||
TaskAmmFim selectTaskFIMbyID(int id_task);
|
||||
|
||||
int deleteReportFIM(int task_id);
|
||||
int insertReportFIM(TaskAmmFim task);
|
||||
|
||||
//Обучаемый
|
||||
Trainee selectTrainee(int id_trainee);
|
||||
QList<Trainee> selectAllTraineesInGroup(int id_group);
|
||||
int selectTraineeID(QString login, QString password = QStringLiteral(""));
|
||||
QString selectTraineeNameByLogin(QString login);
|
||||
QString selectTraineeNameOnComputer(QString computer_name);
|
||||
Trainee selectTraineeOnComputer(QString computer_name);
|
||||
bool selectTraineeArchived(int id_trainee);
|
||||
bool selectTraineeLoggedIn(int id_trainee);
|
||||
int updateTraineeLoggedIn(int id_trainee, bool loggedIn);
|
||||
bool updateAllTraineesLoggedIn(bool loggedIn);
|
||||
int updateTraineeArchived(int id_trainee, bool archived);
|
||||
|
||||
int insertTrainee(int id_group);
|
||||
int insertTrainee(Trainee trainee);
|
||||
int deleteTrainee(int id_trainee);
|
||||
int updateTrainee(Trainee trainee);
|
||||
|
||||
//Тайминг
|
||||
int insertTimingTrainee(int id_trainee);
|
||||
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
|
||||
TimingOfTrainee selectTimingTrainee(int id_trainee);
|
||||
|
||||
private:
|
||||
DataBaseSettings getDataBaseSettings();
|
||||
int queryExecInt(QString queryStr);
|
||||
@@ -122,6 +122,7 @@ protected:
|
||||
private:
|
||||
bool transactionBegined;
|
||||
QMutex mtxAccess;
|
||||
QWidget* ownerWidget;
|
||||
};
|
||||
|
||||
#endif // DATABASELMS_H
|
||||
|
||||
95
DataBaseLMS/databaselms_groups.cpp
Normal file
95
DataBaseLMS/databaselms_groups.cpp
Normal file
@@ -0,0 +1,95 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
QList<Group> DataBaseLMS::selectAllGroups()
|
||||
{
|
||||
QList<Group> listGroups;
|
||||
|
||||
QString queryStr = QString("SELECT group_id, name "
|
||||
"FROM public.groups "
|
||||
"ORDER BY group_id ASC");
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Группа
|
||||
Group group;
|
||||
group.setID(query.value(0).toInt());
|
||||
group.setName(query.value(1).toString());
|
||||
|
||||
listGroups.append(group);
|
||||
}
|
||||
}
|
||||
|
||||
return listGroups;
|
||||
}
|
||||
|
||||
Group DataBaseLMS::selectGroup(int id_group)
|
||||
{
|
||||
Group group;
|
||||
|
||||
QString queryStr = QString("SELECT group_id, name "
|
||||
"FROM public.groups "
|
||||
"WHERE groups.group_id = %1 ").arg(
|
||||
id_group);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
group.setID(query.value(0).toInt());
|
||||
group.setName(query.value(1).toString());
|
||||
}
|
||||
}
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertGroup()
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.groups "
|
||||
"DEFAULT VALUES "
|
||||
"RETURNING group_id");
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertGroup(Group group)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.groups (name) "
|
||||
"VALUES ('%1') "
|
||||
"RETURNING groups.group_id").arg(
|
||||
group.getName());
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteGroup(int id_group)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.groups "
|
||||
"WHERE group_id = %1 "
|
||||
"RETURNING groups.group_id").arg(
|
||||
QString::number(id_group));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateGroup(Group group)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.groups SET name = '%1' "
|
||||
"WHERE group_id = %2 "
|
||||
"RETURNING groups.group_id").arg(
|
||||
group.getName(),
|
||||
QString::number(group.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
231
DataBaseLMS/databaselms_instructors.cpp
Normal file
231
DataBaseLMS/databaselms_instructors.cpp
Normal file
@@ -0,0 +1,231 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
QList<Instructor> DataBaseLMS::selectAllInstructors()
|
||||
{
|
||||
QList<Instructor> listInstructors;
|
||||
|
||||
QString queryStr = QString("SELECT user_id, name, login, password, is_admin, archived, logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE users.type = '%1' "
|
||||
"ORDER BY user_id ASC").arg(
|
||||
TypeUserDBInstructor);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Инструктор
|
||||
Instructor instructor;
|
||||
instructor.setID(query.value(0).toInt());
|
||||
instructor.setName(query.value(1).toString());
|
||||
instructor.setLogin(query.value(2).toString());
|
||||
instructor.setPassword(query.value(3).toString());
|
||||
instructor.setIsAdmin(query.value(4).toBool());
|
||||
instructor.setArchived(query.value(5).toBool());
|
||||
instructor.setLoggedIn(query.value(6).toBool());
|
||||
|
||||
listInstructors.append(instructor);
|
||||
}
|
||||
}
|
||||
|
||||
return listInstructors;
|
||||
}
|
||||
|
||||
Instructor DataBaseLMS::selectInstructor(int id_instructor)
|
||||
{
|
||||
Instructor instructor;
|
||||
|
||||
QString queryStr = QString("SELECT user_id, name, login, password, is_admin, archived, logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE users.user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Инструктор
|
||||
instructor.setID(query.value(0).toInt());
|
||||
instructor.setName(query.value(1).toString());
|
||||
instructor.setLogin(query.value(2).toString());
|
||||
instructor.setPassword(query.value(3).toString());
|
||||
instructor.setIsAdmin(query.value(4).toBool());
|
||||
instructor.setArchived(query.value(5).toBool());
|
||||
instructor.setLoggedIn(query.value(6).toBool());
|
||||
}
|
||||
}
|
||||
|
||||
return instructor;
|
||||
}
|
||||
|
||||
int DataBaseLMS::selectInstructorID(QString login, QString password)
|
||||
{
|
||||
QString queryStr;
|
||||
|
||||
if(password != QStringLiteral(""))
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND password = '%2' AND users.type = '%3' ").arg(
|
||||
login,
|
||||
password,
|
||||
TypeUserDBInstructor);
|
||||
}
|
||||
else
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
TypeUserDBInstructor);
|
||||
}
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectInstructorNameByLogin(QString login)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.name "
|
||||
"FROM public.users "
|
||||
"WHERE users.login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
TypeUserDBInstructor );
|
||||
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorIsAdmin(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.is_admin "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorLoggedIn(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorArchived(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.archived "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructorLoggedIn(int id_instructor, bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateAllInstructorsLoggedIn(bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE users.type = '%2' ").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
TypeUserDBInstructor);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
return queryExec(queryStr, &query);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructorArchived(int id_instructor, bool archived)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET archived = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
archived ? "true" : "false",
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertInstructor()
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, is_admin, archived, logged_in)"
|
||||
"VALUES ('%1', DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)"
|
||||
"RETURNING user_id").arg(
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, is_admin, archived, logged_in) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', %5, %6, %7) "
|
||||
"RETURNING user_id").arg(
|
||||
TypeUserDBInstructor,
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false",
|
||||
instructor.getLoggedIn() ? "true" : "false");
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteInstructor(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' "
|
||||
"RETURNING users.user_id").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5, logged_in = %6 "
|
||||
"WHERE user_id = %7 AND users.type = '%8' "
|
||||
"RETURNING users.user_id").arg(
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false",
|
||||
instructor.getLoggedIn() ? "true" : "false",
|
||||
QString::number(instructor.getID()),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
830
DataBaseLMS/databaselms_tasks.cpp
Normal file
830
DataBaseLMS/databaselms_tasks.cpp
Normal file
@@ -0,0 +1,830 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QMessageBox>
|
||||
|
||||
int DataBaseLMS::insertTaskAMM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString 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 DataBaseLMS::updateTaskAMM(TaskAmmFim task)
|
||||
{
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_amm SET title = '%1', dm_code = '%2', status = '%3' "
|
||||
"WHERE task_id = %4 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskAMM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_amm SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskAMM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
|
||||
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status, "
|
||||
"users.user_id "
|
||||
"FROM public.tasks_amm JOIN public.users ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.ammProcedure.title = query.value(1).toString();
|
||||
task.ammProcedure.dmCode = query.value(2).toString();
|
||||
task.status = query.value(3).toString();
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
QString queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status "
|
||||
"FROM public.tasks_amm "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Задача
|
||||
task.setID(query.value(0).toInt());
|
||||
task.ammProcedure.title = query.value(1).toString();
|
||||
task.ammProcedure.dmCode = query.value(2).toString();
|
||||
task.status = query.value(3).toString();
|
||||
}
|
||||
}
|
||||
|
||||
return task;
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.tasks_fim (title, fk_trainee_id) "
|
||||
"VALUES ('%1', %2) "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
task.title,
|
||||
QString::number(id_trainee));
|
||||
|
||||
int task_id = queryExecInt(queryStr);
|
||||
if(!task_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(Malfunction malfanction : task.malfunctionList)
|
||||
{
|
||||
malfanction.description = malfanction.description.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.malfunctions (num, dm_code, description, fk_task_fim_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
"RETURNING malfunctions.malfunction_id").arg(
|
||||
malfanction.num,
|
||||
malfanction.dmCode,
|
||||
malfanction.description,
|
||||
QString::number(task_id));
|
||||
|
||||
int malfunction_id = queryExecInt(queryStr);
|
||||
if(!malfunction_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Sign
|
||||
for(MalfunctionSign sign : malfanction.malfunctionSigns)
|
||||
{
|
||||
sign.description = sign.description.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.malf_sign (type, description, fk_malfunction_id) "
|
||||
"VALUES ('%1', '%2', %3) "
|
||||
"RETURNING malf_sign.sign_id").arg(
|
||||
QString::number(sign.type),
|
||||
sign.description,
|
||||
QString::number(malfunction_id));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTaskFIM(TaskAmmFim task)
|
||||
{
|
||||
task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_fim SET title = '%1', status = '%2' "
|
||||
"WHERE task_id = %3 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
task.title,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_fim ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
QSqlQuery query1 = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskFIM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_fim ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.malfunction_id ASC").arg(
|
||||
id_task);
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
|
||||
if(malfunction_id)
|
||||
{
|
||||
queryStr = QString("DELETE FROM public.malf_sign "
|
||||
"WHERE fk_malfunction_id = %1 ").arg(
|
||||
malfunction_id);
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySign))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.malfunctions "
|
||||
"WHERE fk_task_fim_id = %1 ").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery query1 = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.tasks_fim "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, tasks_fim.status, "
|
||||
"users.user_id "
|
||||
"FROM public.tasks_fim JOIN public.users ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.title = query.value(1).toString();
|
||||
task.status = query.value(2).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.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.num ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
Malfunction malfanction;
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_sign.sign_id, malf_sign.type, malf_sign.description "
|
||||
"FROM public.malf_sign "
|
||||
"WHERE fk_malfunction_id = %1 "
|
||||
"ORDER BY malf_sign.sign_id ASC").arg(
|
||||
QString::number(malfunction_id));
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &querySign))
|
||||
{
|
||||
while (querySign.next())
|
||||
{//Сигналы
|
||||
MalfunctionSign sign;
|
||||
sign.type = querySign.value(1).toString().toInt();
|
||||
sign.description = querySign.value(2).toString();
|
||||
|
||||
malfanction.malfunctionSigns.append(sign);
|
||||
};
|
||||
}
|
||||
|
||||
task.addMalfunction(malfanction);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
|
||||
//Выгребаем отчет для этой задачи
|
||||
int report_id = 0;
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task.getID()));
|
||||
|
||||
QSqlQuery queryReport = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReport))
|
||||
{
|
||||
if (queryReport.first())
|
||||
{//Отчет
|
||||
report_id = queryReport.value(0).toInt();
|
||||
task.report.id = report_id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
if(report_id)
|
||||
{//Отчет есть
|
||||
//Выгребаем все item отчета
|
||||
|
||||
queryStr = QString("SELECT report_items.item_id, report_items.text, report_items.doc, report_items.dm_code, report_items.title, report_items.result, report_items.fk_report_id, report_items.number "
|
||||
"FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryItems))
|
||||
{
|
||||
while (queryItems.next())
|
||||
{//report_item
|
||||
FIMReportItem reportItem;
|
||||
reportItem.id = queryItems.value(0).toInt();
|
||||
reportItem.text = queryItems.value(1).toString();
|
||||
reportItem.procedure.doc = queryItems.value(2).toString();
|
||||
reportItem.procedure.dmCode = queryItems.value(3).toString();
|
||||
reportItem.procedure.title = queryItems.value(4).toString();
|
||||
reportItem.procedure.result = queryItems.value(5).toString();
|
||||
//item_report
|
||||
//number
|
||||
|
||||
task.report.itemList.append(reportItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, tasks_fim.status "
|
||||
"FROM public.tasks_fim "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
{//Задача
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.title = query.value(1).toString();
|
||||
task.status = query.value(2).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.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.num ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
Malfunction malfanction;
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_sign.sign_id, malf_sign.type, malf_sign.description "
|
||||
"FROM public.malf_sign "
|
||||
"WHERE fk_malfunction_id = %1 "
|
||||
"ORDER BY malf_sign.sign_id ASC").arg(
|
||||
QString::number(malfunction_id));
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &querySign))
|
||||
{
|
||||
while (querySign.next())
|
||||
{//Сигналы
|
||||
MalfunctionSign sign;
|
||||
sign.type = querySign.value(1).toString().toInt();
|
||||
sign.description = querySign.value(2).toString();
|
||||
|
||||
malfanction.malfunctionSigns.append(sign);
|
||||
};
|
||||
}
|
||||
|
||||
task.addMalfunction(malfanction);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
|
||||
//Выгребаем отчет для этой задачи
|
||||
int report_id = 0;
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task.getID()));
|
||||
|
||||
QSqlQuery queryReport = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReport))
|
||||
{
|
||||
if (queryReport.first())
|
||||
{//Отчет
|
||||
report_id = queryReport.value(0).toInt();
|
||||
task.report.id = report_id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
if(report_id)
|
||||
{//Отчет есть
|
||||
//Выгребаем все item отчета
|
||||
|
||||
queryStr = QString("SELECT report_items.item_id, report_items.text, report_items.doc, report_items.dm_code, report_items.title, report_items.result, report_items.fk_report_id, report_items.number "
|
||||
"FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryItems))
|
||||
{
|
||||
while (queryItems.next())
|
||||
{//report_item
|
||||
FIMReportItem reportItem;
|
||||
reportItem.id = queryItems.value(0).toInt();
|
||||
reportItem.text = queryItems.value(1).toString();
|
||||
reportItem.procedure.doc = queryItems.value(2).toString();
|
||||
reportItem.procedure.dmCode = queryItems.value(3).toString();
|
||||
reportItem.procedure.title = queryItems.value(4).toString();
|
||||
reportItem.procedure.result = queryItems.value(5).toString();
|
||||
//item_report
|
||||
//number
|
||||
|
||||
task.report.itemList.append(reportItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return task;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteReportFIM(int task_id)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int report_id = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Отчет
|
||||
report_id = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!report_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery query1 = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
|
||||
"WHERE task_id = %2 ").arg(
|
||||
"new",
|
||||
QString::number(task_id) );
|
||||
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
resBool = db->commit();
|
||||
return report_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertReportFIM(TaskAmmFim task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
//task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.reports (fk_task_fim_id) "
|
||||
"VALUES (%1) "
|
||||
"RETURNING reports.report_id").arg(
|
||||
task.getID());
|
||||
|
||||
int report_id = queryExecInt(queryStr);
|
||||
if(!report_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int number = 0;
|
||||
for(FIMReportItem reportItem : task.report.itemList)
|
||||
{
|
||||
queryStr = QString("INSERT INTO public.report_items (text, doc, dm_code, title, result, fk_report_id, number) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', '%5', %6, %7) "
|
||||
"RETURNING report_items.item_id").arg(
|
||||
reportItem.text,
|
||||
reportItem.procedure.doc,
|
||||
reportItem.procedure.dmCode,
|
||||
reportItem.procedure.title,
|
||||
reportItem.procedure.result,
|
||||
QString::number(report_id),
|
||||
QString::number(++number));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
|
||||
"WHERE task_id = %2 ").arg(
|
||||
"checkup",
|
||||
QString::number(task.getID()) );
|
||||
|
||||
QSqlQuery query1 = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
resBool = db->commit();
|
||||
return report_id;
|
||||
}
|
||||
565
DataBaseLMS/databaselms_trainees.cpp
Normal file
565
DataBaseLMS/databaselms_trainees.cpp
Normal file
@@ -0,0 +1,565 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
QList<Trainee> DataBaseLMS::selectAllTrainees()
|
||||
{
|
||||
QList<Trainee> listTrainees;
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.type = '%1' "
|
||||
"ORDER BY groups.name, users.name ASC").arg(
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
Trainee trainee;
|
||||
|
||||
trainee.setID(query.value(0).toInt());
|
||||
trainee.setName(query.value(1).toString());
|
||||
trainee.setLogin(query.value(2).toString());
|
||||
trainee.setPassword(query.value(3).toString());
|
||||
trainee.setArchived(query.value(4).toBool());
|
||||
trainee.setLoggedIn(query.value(5).toBool());
|
||||
|
||||
Group group = Group(query.value(6).toInt(), query.value(7).toString());
|
||||
trainee.setGroup(group);
|
||||
|
||||
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
|
||||
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
|
||||
trainee.setComputer(computer);
|
||||
|
||||
listTrainees.append(trainee);
|
||||
}
|
||||
}
|
||||
|
||||
return listTrainees;
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTrainee(int id_trainee)
|
||||
{
|
||||
Trainee trainee;
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.user_id = %1 AND users.type = '%2' "
|
||||
"ORDER BY groups.name, trainees.name ASC").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
trainee.setID(query.value(0).toInt());
|
||||
trainee.setName(query.value(1).toString());
|
||||
trainee.setLogin(query.value(2).toString());
|
||||
trainee.setPassword(query.value(3).toString());
|
||||
trainee.setArchived(query.value(4).toBool());
|
||||
trainee.setLoggedIn(query.value(5).toBool());
|
||||
|
||||
Group group = Group(query.value(6).toInt(), query.value(7).toString());
|
||||
trainee.setGroup(group);
|
||||
|
||||
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
|
||||
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
|
||||
trainee.setComputer(computer);
|
||||
}
|
||||
}
|
||||
|
||||
return trainee;
|
||||
}
|
||||
|
||||
QList<Trainee> DataBaseLMS::selectAllTraineesInGroup(int id_group)
|
||||
{
|
||||
QList<Trainee> listTrainees;
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.fk_group_id = %1 AND users.type = '%2' "
|
||||
"ORDER BY groups.name, users.name ASC").arg(
|
||||
QString::number(id_group),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
Trainee trainee;
|
||||
|
||||
trainee.setID(query.value(0).toInt());
|
||||
trainee.setName(query.value(1).toString());
|
||||
trainee.setLogin(query.value(2).toString());
|
||||
trainee.setPassword(query.value(3).toString());
|
||||
trainee.setArchived(query.value(4).toBool());
|
||||
trainee.setLoggedIn(query.value(5).toBool());
|
||||
|
||||
Group group = Group(query.value(6).toInt(), query.value(7).toString());
|
||||
trainee.setGroup(group);
|
||||
|
||||
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
|
||||
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
|
||||
trainee.setComputer(computer);
|
||||
|
||||
listTrainees.append(trainee);
|
||||
}
|
||||
}
|
||||
|
||||
return listTrainees;
|
||||
}
|
||||
|
||||
int DataBaseLMS::selectTraineeID(QString login, QString password)
|
||||
{
|
||||
QString queryStr;
|
||||
|
||||
if(password != QStringLiteral(""))
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND password = '%2' AND users.type = '%3' ").arg(
|
||||
login,
|
||||
password,
|
||||
TypeUserDBTrainee);
|
||||
}
|
||||
else
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
TypeUserDBTrainee);
|
||||
}
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectTraineeNameByLogin(QString login)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.name "
|
||||
"FROM public.users "
|
||||
"WHERE users.login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectTraineeNameOnComputer(QString computer_name)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.name "
|
||||
"FROM public.users JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"WHERE computers.name = '%1' AND users.type = '%2' ").arg(
|
||||
computer_name,
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTraineeOnComputer(QString computer_name)
|
||||
{
|
||||
Trainee trainee;
|
||||
|
||||
QString queryStr = QString("SELECT users.trainee_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE computers.name = '%1' AND users.type = '%2' ").arg(
|
||||
computer_name,
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
trainee.setID(query.value(0).toInt());
|
||||
trainee.setName(query.value(1).toString());
|
||||
trainee.setLogin(query.value(2).toString());
|
||||
trainee.setPassword(query.value(3).toString());
|
||||
trainee.setArchived(query.value(4).toBool());
|
||||
trainee.setLoggedIn(query.value(5).toBool());
|
||||
|
||||
Group group = Group(query.value(6).toInt(), query.value(7).toString());
|
||||
trainee.setGroup(group);
|
||||
|
||||
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
|
||||
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
|
||||
trainee.setComputer(computer);
|
||||
}
|
||||
}
|
||||
|
||||
return trainee;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectTraineeArchived(int id_trainee)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.archived "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectTraineeLoggedIn(int id_trainee)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTraineeLoggedIn(int id_trainee, bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateAllTraineesLoggedIn(bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE users.type = '%2' ").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
return queryExec(queryStr, &query);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTraineeArchived(int id_trainee, bool archived)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET archived = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
archived ? "true" : "false",
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTrainee(int id_group)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, archived, logged_in, fk_group_id) "
|
||||
"VALUES ('%1', DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, %2) "
|
||||
"RETURNING users.user_id").arg(
|
||||
TypeUserDBTrainee,
|
||||
QString::number(id_group));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTrainee(Trainee trainee)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, archived, logged_in, fk_group_id) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', %5, %6, %7) "
|
||||
"RETURNING users.user_id").arg(
|
||||
TypeUserDBTrainee,
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getLoggedIn() ? "true" : "false",
|
||||
QString::number(trainee.getGroup().getID()));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTrainee(int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
int res = 0;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
|
||||
//Удаление задач AMM
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTasksAMMDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTasksAMMDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//Удаление задач FIM
|
||||
|
||||
/*Выборка задач FIM для этого обучаемого*/
|
||||
queryStr = QString("SELECT tasks_fim.task_id "
|
||||
"FROM public.tasks_fim "
|
||||
"WHERE tasks_fim.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery queryTasksFIMSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryTasksFIMSEL))
|
||||
{
|
||||
while (queryTasksFIMSEL.next())
|
||||
{//Задача
|
||||
int task_id = queryTasksFIMSEL.value(0).toInt();
|
||||
|
||||
/*Выборка неисправностей для этой задачи*/
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id "
|
||||
"FROM public.malfunctions "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.malfunction_id ASC").arg(
|
||||
task_id);
|
||||
|
||||
QSqlQuery queryMulfSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryMulfSEL))
|
||||
{
|
||||
while (queryMulfSEL.next())
|
||||
{//Неисправность
|
||||
int mulf_id = queryMulfSEL.value(0).toInt();
|
||||
|
||||
/*Удаление сигналов для этой неисправности*/
|
||||
queryStr = QString("DELETE FROM public.mals_signs "
|
||||
"WHERE mals_signs.fk_mulfunction_id = %1 ").arg(
|
||||
mulf_id);
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySign))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление неисправностей*/
|
||||
queryStr = QString("DELETE FROM public.malfunctions "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 ").arg(
|
||||
task_id);
|
||||
QSqlQuery queryMulfDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryMulfDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление отчетов для задачи*/
|
||||
/*Выборка отчетов для этой задачи*/
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE reports.fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
task_id);
|
||||
QSqlQuery queryReportsSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryReportsSEL))
|
||||
{
|
||||
while (queryReportsSEL.next())
|
||||
{//отчет
|
||||
int report_id = queryReportsSEL.value(0).toInt();
|
||||
|
||||
/*Удаление items для этого отчета*/
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE report_items.fk_report_id = %1 ").arg(
|
||||
report_id);
|
||||
QSqlQuery queryReportDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление отчетов*/
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE reports.fk_task_fim_id = %1 ").arg(
|
||||
task_id);
|
||||
QSqlQuery queryReportsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
// ////////////////////////////
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление непосредственно задач FIM*/
|
||||
queryStr = QString("DELETE FROM public.tasks_fim "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTasksFIMDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTasksFIMDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление таймингов для обучаемого*/
|
||||
queryStr = QString("DELETE FROM public.timings "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTimingsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTimingsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
// ////////////////////////////
|
||||
|
||||
|
||||
//Удаление обучаемого
|
||||
queryStr = QString("DELETE FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' "
|
||||
"RETURNING users.user_id").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
res = queryExecInt(queryStr);
|
||||
if(res)
|
||||
{
|
||||
resBool = db->commit();
|
||||
return res;
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTrainee(Trainee trainee)
|
||||
{
|
||||
QString computer_id = (trainee.getComputer().getID() == 0 ? QStringLiteral("null") : QString::number(trainee.getComputer().getID()));
|
||||
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET name = '%1', login = '%2', password = '%3', archived = %4, logged_in = %5, "
|
||||
"fk_group_id = %6, "
|
||||
"fk_computer_id = %7 "
|
||||
"WHERE user_id = %8 AND users.type = '%9' "
|
||||
"RETURNING users.user_id").arg(
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getLoggedIn() ? "true" : "false",
|
||||
QString::number(trainee.getGroup().getID()),
|
||||
computer_id,
|
||||
QString::number(trainee.getID()),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTimingTrainee(int id_trainee)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.timings (entry_time, exit_time, operating_time, fk_trainee_id) "
|
||||
"VALUES (DEFAULT, DEFAULT, DEFAULT, %1) "
|
||||
"RETURNING timings.timing_id").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.timings "
|
||||
"SET entry_time = '%1', exit_time = '%2', operating_time = '%3', fk_trainee_id = %4 "
|
||||
"WHERE timing_id = %5 "
|
||||
"RETURNING timings.timing_id").arg(
|
||||
timing.getEntryTimeS(),
|
||||
timing.getExitTimeS(),
|
||||
timing.getOperatingTimeS(),
|
||||
QString::number(id_trainee),
|
||||
QString::number(timing.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
|
||||
{
|
||||
TimingOfTrainee timing(id_trainee);
|
||||
|
||||
QString queryStr = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.fk_trainee_id "
|
||||
"FROM public.timings "
|
||||
"WHERE fk_trainee_id = '%1'").arg(id_trainee);
|
||||
|
||||
QSqlQuery querySel = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &querySel))
|
||||
{
|
||||
if (querySel.first())
|
||||
{//Тайминг
|
||||
timing.setID(querySel.value(0).toInt());
|
||||
timing.setEntryTime(querySel.value(1).toDateTime());
|
||||
timing.setExitTime(querySel.value(2).toDateTime());
|
||||
timing.setOperatingTime(querySel.value(3).toTime());
|
||||
timing.setTraineeID(querySel.value(4).toInt());
|
||||
}
|
||||
}
|
||||
|
||||
return timing;
|
||||
}
|
||||
@@ -5,9 +5,11 @@
|
||||
#include <QTime>
|
||||
#include "interfacedatabaselms.h"
|
||||
|
||||
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
|
||||
QWidget(parent),
|
||||
DataBaseLMS()
|
||||
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget *ownerWidget, QObject *parent):
|
||||
//QWidget(parent),
|
||||
QObject(parent),
|
||||
DataBaseLMS(ownerWidget),
|
||||
ownerWidget(ownerWidget)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
#include "DataBaseLMS_global.h"
|
||||
#include "databaselms.h"
|
||||
|
||||
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public /*QObject*/QWidget, DataBaseLMS
|
||||
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public QObject, DataBaseLMS
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
InterfaceDataBaseLMS(QWidget* parent = nullptr);
|
||||
InterfaceDataBaseLMS(QWidget *ownerWidget, QObject *parent = nullptr);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slot_LanguageChanged(QString language);
|
||||
@@ -24,6 +24,7 @@ public:
|
||||
bool DisConnectionFromDB();
|
||||
bool DBisConnected();
|
||||
|
||||
|
||||
//Инструкторы
|
||||
|
||||
bool AuthorizationInstructor(QString login, QString password);
|
||||
@@ -55,9 +56,6 @@ public:
|
||||
int entryTraineeOnSimulator(int id_trainee);
|
||||
int exitTraineeFromSimulator(int id_trainee);
|
||||
|
||||
|
||||
//void setTasks(QString login, QStringList tasks);
|
||||
|
||||
QString getNameTraineeOnComputer(QString computer_name);
|
||||
Trainee getTraineeOnComputer(QString computer_name);
|
||||
|
||||
@@ -67,10 +65,19 @@ public:
|
||||
QList<Trainee> getListTraineesInGroup(int id);
|
||||
QList<Group> getListGroups();
|
||||
QList<Trainee> getListTrainees();
|
||||
|
||||
Trainee getTrainee(int id);
|
||||
Group getGroup(int group_id);
|
||||
|
||||
int newTrainee(int id_group);
|
||||
int delTrainee(int id);
|
||||
int editTrainee(Trainee trainee);
|
||||
|
||||
bool isArchivedTrainee(int id);
|
||||
bool isLoggedInTrainee(int id);
|
||||
|
||||
|
||||
//Группы
|
||||
|
||||
Group getGroup(int group_id);
|
||||
int newGroup();
|
||||
int delGroup(int id);
|
||||
int editGroup(Group group);
|
||||
@@ -79,6 +86,9 @@ public:
|
||||
int delTaskAMM(int id);
|
||||
int editTaskAMM(TaskAmmFim task);
|
||||
|
||||
|
||||
//Задачи
|
||||
|
||||
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> getListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
@@ -92,15 +102,9 @@ public:
|
||||
int changeStatusTaskFIM(int id_task, QString status);
|
||||
int changeStatusTaskAMM(int id_task, QString status);
|
||||
|
||||
int newTrainee(int id_group);
|
||||
int delTrainee(int id);
|
||||
int editTrainee(Trainee trainee);
|
||||
|
||||
bool isArchivedTrainee(int id);
|
||||
bool isLoggedInTrainee(int id);
|
||||
|
||||
private:
|
||||
QTranslator qtLanguageTranslator;
|
||||
QWidget* ownerWidget;
|
||||
};
|
||||
|
||||
#endif // INTERFACEDATABASELMS_H
|
||||
|
||||
5
DataBaseLMS/resources.qrc
Normal file
5
DataBaseLMS/resources.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>resources/blankXML/ErrorDB.xml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
3
DataBaseLMS/resources/blankXML/ErrorDB.xml
Normal file
3
DataBaseLMS/resources/blankXML/ErrorDB.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<ErrorDB>
|
||||
</ErrorDB>
|
||||
Reference in New Issue
Block a user