Files
RRJServer/DataBaseLMS/databaselms.h

128 lines
3.9 KiB
C++

#ifndef DATABASELMS_H
#define DATABASELMS_H
#include <QSqlDatabase>
#include <QMutex>
#include "instructor.h"
#include "trainee.h"
#include "group.h"
#include "tasksAmmFim.h"
#include "timingoftrainee.h"
class DataBaseSettings
{
public:
QString dbName = "DataBaseLMS";
QString dbType = "QPSQL";
QString connectionName = "Connection";
QString dbUserName = "postgres";
QString dbPassword = "12345678";
QString dbHostName = "";
int dbPort = 5432;
};
class DataBaseLMS
{
public:
DataBaseLMS();
~DataBaseLMS();
protected:
//Подключение
bool createConnection();
void deleteConnection();
bool isConnected();
//Транзакции
bool transactionBegin();
bool transactionEnd();
//Списки
QList<Instructor> selectAllInstructors();
QList<Trainee> selectAllTrainees();
QList<Group> selectAllGroups();
//Инструктор
Instructor selectInstructor(int id_instructor);
int selectInstructorID(QString login, QString password = QStringLiteral(""));
QString selectInstructorNameByLogin(QString login);
bool selectInstructorIsAdmin(int id_instructor);
bool selectInstructorLoggedIn(int id_instructor);
bool selectInstructorArchived(int id_instructor);
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);
//Группа
Group selectGroup(int id_group);
int insertGroup();
int insertGroup(Group group);
int deleteGroup(int id_group);
int updateGroup(Group group);
//Задача AMM
int insertTaskAMM(TaskAmmFim task, int id_trainee);
int updateTaskAMM(TaskAmmFim task);
int updateStatusTaskAMM(int task_id, QString status);
int deleteTaskAMM(int id_task);
QList<TaskAmmFim> selectTasksAMMofTrainee(int id_trainee);
TaskAmmFim selectTaskAMMbyID(int id_task);
//Задача FIM
int insertTaskFIM(TaskAmmFim task, int id_trainee);
int updateTaskFIM(TaskAmmFim task);
int updateStatusTaskFIM(int task_id, QString status);
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);
QString queryExecString(QString queryStr);
bool queryExecBool(QString queryStr);
bool queryExec(QString queryStr, QSqlQuery* query);
void messageWarningErrorQuery(QString queryStr, QSqlQuery* query);
protected:
QSqlDatabase* db;
DataBaseSettings dbSettings;
private:
bool transactionBegined;
QMutex mtxAccess;
};
#endif // DATABASELMS_H