mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
PSQL 01.11.2024
This commit is contained in:
260
DB_LMS/DataBaseLMS/databaselms.cpp
Normal file
260
DB_LMS/DataBaseLMS/databaselms.cpp
Normal file
@@ -0,0 +1,260 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QMessageBox>
|
||||
|
||||
DataBaseLMS::DataBaseLMS():
|
||||
db(nullptr)
|
||||
{
|
||||
createConnection();
|
||||
}
|
||||
|
||||
DataBaseLMS::~DataBaseLMS()
|
||||
{
|
||||
deleteConnection();
|
||||
}
|
||||
|
||||
bool DataBaseLMS::createConnection()
|
||||
{
|
||||
db = new QSqlDatabase(QSqlDatabase::addDatabase(dbType));
|
||||
db->setDatabaseName(dbName);
|
||||
db->setUserName(dbUserName);
|
||||
db->setPassword(dbPassword);
|
||||
if(!db->open())
|
||||
{
|
||||
QMessageBox::critical(nullptr, dbName, "Connection error: " + db->lastError().text());
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::information(nullptr, dbName, "Connection is successful!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void DataBaseLMS::deleteConnection()
|
||||
{
|
||||
if(db != nullptr)
|
||||
{
|
||||
if(db->isOpen())
|
||||
db->close();
|
||||
delete db;
|
||||
}
|
||||
}
|
||||
|
||||
QList<Instructor> DataBaseLMS::selectAllInstructors()
|
||||
{
|
||||
QList<Instructor> listInstructors;
|
||||
|
||||
QString queryStr = QString("SELECT instructor_id, name, login, password, is_admin, archived "
|
||||
"FROM public.instructors "
|
||||
"ORDER BY instructor_id ASC");
|
||||
|
||||
QSqlQuery query(*db);
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
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(false);
|
||||
|
||||
listInstructors.append(instructor);
|
||||
}
|
||||
}
|
||||
|
||||
return listInstructors;
|
||||
}
|
||||
|
||||
QList<Trainee> DataBaseLMS::selectAllTrainees()
|
||||
{
|
||||
QList<Trainee> listTrainees;
|
||||
|
||||
QString queryStr = QString("SELECT trainees.trainee_id, trainees.name, trainees.login, trainees.password, trainees.archived, "
|
||||
"groups_of_trainees.name "
|
||||
"FROM public.trainees JOIN public.groups_of_trainees ON groups_of_trainees.group_id = trainees.group_trainees "
|
||||
"ORDER BY groups_of_trainees.name ASC");
|
||||
|
||||
QSqlQuery query(*db);
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
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.setGroup(query.value(5).toString());
|
||||
trainee.setWhatItDoes(QStringLiteral(""));
|
||||
trainee.setLoggedIn(false);
|
||||
trainee.setLearnClass(QStringLiteral(""));
|
||||
trainee.setComputer(QStringLiteral(""));
|
||||
|
||||
listTrainees.append(trainee);
|
||||
}
|
||||
}
|
||||
|
||||
return listTrainees;
|
||||
}
|
||||
|
||||
QList<Group> DataBaseLMS::selectAllGroups()
|
||||
{
|
||||
QList<Group> listGroups;
|
||||
|
||||
QString queryStr = QString("SELECT group_id, name, color "
|
||||
"FROM public.groups_of_trainees "
|
||||
"ORDER BY group_id ASC");
|
||||
|
||||
QSqlQuery query(*db);
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
while (query.next())
|
||||
{//Группа
|
||||
Group group;
|
||||
group.setID(query.value(0).toInt());
|
||||
group.setName(query.value(1).toString());
|
||||
group.setColor((Group::ColorGroup)query.value(2).toInt());
|
||||
|
||||
listGroups.append(group);
|
||||
}
|
||||
}
|
||||
|
||||
return listGroups;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::insertInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.instructors (name, login, password, is_admin, archived) "
|
||||
"VALUES ('%1', '%2', '%3', %4, %5)").arg(
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false");
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::deleteInstructor(int instructor_id)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.instructors WHERE instructor_id = %1").arg(QString::number(instructor_id));
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.instructors "
|
||||
"SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5 "
|
||||
"WHERE instructor_id = %6").arg(
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false",
|
||||
QString::number(instructor.getID()) );
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::insertGroup(Group group)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.groups_of_trainees (name, color) "
|
||||
"VALUES ('%1', %2)").arg(
|
||||
group.getName(),
|
||||
QString::number((int)group.getColor()));
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::deleteGroup(int group_id)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.groups_of_trainees WHERE group_id = %1").arg(QString::number(group_id));
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateGroup(Group group)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.groups_of_trainees SET name = '%1', color = %2 WHERE group_id = %3").arg(
|
||||
group.getName(),
|
||||
QString::number((int)group.getColor()),
|
||||
QString::number(group.getID()) );
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::insertTrainee(Trainee trainee)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, group_trainees) "
|
||||
"VALUES ('%1', '%2', '%3', %4, "
|
||||
"(SELECT group_id FROM public.groups_of_trainees WHERE name = '%5') "
|
||||
")").arg(
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getGroup());
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::deleteTrainee(int trainee_id)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.trainees WHERE trainee_id = %1").arg(QString::number(trainee_id));
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateTrainee(Trainee trainee)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.trainees "
|
||||
"SET name = '%1', login = '%2', password = '%3', archived = %4, group_trainees = "
|
||||
"(SELECT group_id FROM public.groups_of_trainees WHERE name = '%5') "
|
||||
"WHERE trainee_id = %6").arg(
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getGroup(),
|
||||
QString::number(trainee.getID()) );
|
||||
|
||||
return queryExec(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::queryExec(QString queryStr)
|
||||
{
|
||||
QSqlQuery query(*db);
|
||||
if(!query.exec(queryStr))
|
||||
{
|
||||
messageWarningErrorQuery(queryStr);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
void DataBaseLMS::messageWarningErrorQuery(QString queryStr)
|
||||
{
|
||||
QMessageBox::warning(nullptr, dbName, "Error query: " + queryStr + "\n" + db->lastError().text());
|
||||
}
|
||||
Reference in New Issue
Block a user