after interface 13.11.2024

This commit is contained in:
krivoshein
2024-11-13 17:16:33 +03:00
parent 61aaac2b1c
commit 2ed1eac956
80 changed files with 1734 additions and 1379 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-11-13T09:53:44. -->
<!-- Written by QtCreator 4.11.1, 2024-11-13T17:15:54. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -487,6 +487,56 @@ Trainee DataBaseLMS::selectTrainee(int id_trainee)
return trainee;
}
QList<Trainee> DataBaseLMS::selectAllTraineesInGroup(int id_group)
{
QList<Trainee> listTrainees;
QString queryStr = QString("SELECT trainees.trainee_id, trainees.name, trainees.login, trainees.password, trainees.archived, trainees.logged_in, "
"groups.group_id, groups.name, "
"computers.computer_id, computers.name, computers.ip_address, "
"classrooms.classroom_id, classrooms.name "
"FROM public.trainees JOIN public.groups ON groups.group_id = trainees.group_trainee "
"LEFT OUTER JOIN public.computers ON computers.computer_id = trainees.computer_trainee "
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.classroom_computer "
"WHERE trainees.group_trainee = %1 "
"ORDER BY groups.name, trainees.name ASC").arg(
id_group);
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
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.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);
trainee.setTasks(selectTasksOfTrainee(trainee.getID()));
listTrainees.append(trainee);
}
}
return listTrainees;
}
int DataBaseLMS::selectTraineeID(QString login, QString password)
{
QString queryStr;

View File

@@ -7,16 +7,13 @@
#include "trainee.h"
#include "group.h"
#include "DataBaseLMS_global.h"
class DATABASELMS_EXPORT DataBaseLMS
class DataBaseLMS
{
public:
DataBaseLMS();
~DataBaseLMS();
protected:
public:
//Подключение
bool createConnection();
void deleteConnection();
@@ -53,6 +50,7 @@ protected:
//Обучаемый
Trainee selectTrainee(int id_trainee);//
QList<Trainee> selectAllTraineesInGroup(int id_group);
int selectTraineeID(QString login, QString password = QStringLiteral(""));//
bool selectTraineeArchived(int id_trainee);//
bool selectTraineeLoggedIn(int id_trainee);//

View File

@@ -1,6 +1,305 @@
#include <QMessageBox>
#include "interfacedatabaselms.h"
InterfaceDataBaseLMS::InterfaceDataBaseLMS()
InterfaceDataBaseLMS::InterfaceDataBaseLMS():
DataBaseLMS()
{
}
//Инструкторы
bool InterfaceDataBaseLMS::AuthorizationInstructor(QString login, QString password)
{
if(! transactionBegin())
return false;
if(int id = selectInstructorID(login, password))
{
if(updateInstructorLoggedIn(id, true))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationInstructor(QString login)
{
if(! transactionBegin())
return false;
if(int id = selectInstructorID(login))
{
if(updateInstructorLoggedIn(id, false))
return transactionEnd();
}
transactionEnd();
return false;
}
QList<Instructor> InterfaceDataBaseLMS::getListInstructors()
{
return selectAllInstructors();
}
Instructor InterfaceDataBaseLMS::getInstructor(int id)
{
return selectInstructor(id);
}
int InterfaceDataBaseLMS::newInstructor()
{
return insertInstructor();
}
int InterfaceDataBaseLMS::delInstructor(int id)
{
return deleteInstructor(id);
}
int InterfaceDataBaseLMS::editInstructor(Instructor instructor)
{
//Проверка корректности логина, имени, пароля
QList<Instructor> listInstructors = selectAllInstructors();
for(Instructor exist_instructor : listInstructors)
{
if(instructor.getName() == QStringLiteral("<instructor>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getLogin() == QStringLiteral("<login>"))
{//Логин не корректен!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor login has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getPassword() == QStringLiteral("<password>"))
{//Пароль не корректный!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable instructor password has been entered.\nThe changes will not be accepted."));
return 0;
}
if(instructor.getName() == exist_instructor.getName() && instructor.getID() != exist_instructor.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing instructor name has been entered."));
return 0;
}
if(instructor.getLogin() == exist_instructor.getLogin() && instructor.getID() != exist_instructor.getID())
{//Логин уже существует!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing instructor login has been entered.\nThe changes will not be accepted."));
return 0;
}
}
return updateInstructor(instructor);
}
bool InterfaceDataBaseLMS::isAdminInstructor(int id)
{
return selectInstructorIsAdmin(id);
}
bool InterfaceDataBaseLMS::isArchivedInstructor(int id)
{
return selectInstructorArchived(id);
}
//Инструкторы
bool InterfaceDataBaseLMS::AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{
if(! transactionBegin())
return false;
if(int id = selectTraineeID(login, password))
{
if(updateTraineeLoggedIn(id, true))
return transactionEnd();
}
transactionEnd();
return false;
}
bool InterfaceDataBaseLMS::deAuthorizationTrainee(QString login)
{
if(! transactionBegin())
return false;
if(int id = selectTraineeID(login))
{
if(updateTraineeLoggedIn(id, false))
return transactionEnd();
}
transactionEnd();
return false;
}
QList<Task> InterfaceDataBaseLMS::getTasksTrainee(int id)
{
return selectTasksOfTrainee(id);
}
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
{
/*
for(Trainee trainee : listOfTrainees)
{
if(trainee.getComputer().getName() == computer_name)
return trainee.getName();
}*/
return QString(QStringLiteral(""));
}
Trainee InterfaceDataBaseLMS::getTraineeOnComputer(QString computer_name)
{
/*
for(Trainee trainee : listOfTrainees)
{
if(trainee.getComputer().getName() == computer_name)
return trainee;
}*/
return Trainee();
}
QString InterfaceDataBaseLMS::getNameTraineeByLogin(QString login)
{
/*
for(Trainee trainee : listOfTrainees)
{
if(trainee.getLogin() == login)
return trainee.getName();
}*/
return QString(QStringLiteral(""));
}
QList<Trainee> InterfaceDataBaseLMS::getListTraineesInGroup(int id)
{
return selectAllTraineesInGroup(id);
}
QList<Group> InterfaceDataBaseLMS::getListGroups()
{
return selectAllGroups();
}
QList<Trainee> InterfaceDataBaseLMS::getListTrainees()
{
return selectAllTrainees();
}
Trainee InterfaceDataBaseLMS::getTrainee(int id)
{
return selectTrainee(id);
}
Group InterfaceDataBaseLMS::getGroup(int id)
{
return selectGroup(id);
}
int InterfaceDataBaseLMS::newGroup()
{
return insertGroup();
}
int InterfaceDataBaseLMS::delGroup(int id)
{
return deleteGroup(id);
}
int InterfaceDataBaseLMS::editGroup(Group group)
{
//Проверка корректности имени
QList<Group> listGroups = selectAllGroups();
for(Group exist_group : listGroups)
{
if(group.getName() == QStringLiteral("<group>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable group name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(group.getName() == exist_group.getName() && group.getID() != exist_group.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing group name has been entered."));
return 0;
}
}
return updateGroup(group);
}
int InterfaceDataBaseLMS::newTrainee(int id_group)
{
return insertTrainee(id_group);
}
int InterfaceDataBaseLMS::delTrainee(int id)
{
return deleteTrainee(id);
}
int InterfaceDataBaseLMS::editTrainee(Trainee trainee)
{
//Проверка корректности логина, имени, пароля
QList<Trainee> listTrainees = selectAllTrainees();
for(Trainee exist_trainee : listTrainees)
{
if(trainee.getName() == QStringLiteral("<trainee>"))
{//Имя не корректно!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee name has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getLogin() == QStringLiteral("<login>"))
{//Логин не корректен!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee login has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getPassword() == QStringLiteral("<password>"))
{//Пароль не корректный!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("Unacceptable trainee password has been entered.\nThe changes will not be accepted."));
return 0;
}
if(trainee.getName() == exist_trainee.getName() && trainee.getID() != exist_trainee.getID())
{//Имя уже существует
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee name has been entered."));
return 0;
}
if(trainee.getLogin() == exist_trainee.getLogin() && trainee.getID() != exist_trainee.getID())
{//Логин уже существует!
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee login has been entered.\nThe changes will not be accepted."));
return 0;
}
}
return updateTrainee(trainee);
}
bool InterfaceDataBaseLMS::isArchivedTrainee(int id)
{
return selectTraineeArchived(id);
}

View File

@@ -1,13 +1,67 @@
#ifndef INTERFACEDATABASELMS_H
#define INTERFACEDATABASELMS_H
#include <QObject>
#include "DataBaseLMS_global.h"
#include "databaselms.h"
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public DataBaseLMS
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public QObject, DataBaseLMS
{
Q_OBJECT
public:
InterfaceDataBaseLMS();
public:
//Инструкторы
bool AuthorizationInstructor(QString login, QString password);
bool deAuthorizationInstructor(QString login);
QList<Instructor> getListInstructors();
Instructor getInstructor(int id);
int newInstructor();
int delInstructor(int id);
int editInstructor(Instructor instructor);
bool isAdminInstructor(int id);
bool isArchivedInstructor(int id);
//Обучаемые
bool AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name);
bool deAuthorizationTrainee(QString login);
//void setTasks(QString login, QStringList tasks);
QList<Task> getTasksTrainee(int id);
QString getNameTraineeOnComputer(QString computer_name);
Trainee getTraineeOnComputer(QString computer_name);
QString getNameTraineeByLogin(QString login);
QList<Trainee> getListTraineesInGroup(int id);
QList<Group> getListGroups();
QList<Trainee> getListTrainees();
Trainee getTrainee(int id);
Group getGroup(int group_id);
int newGroup();
int delGroup(int id);
int editGroup(Group group);
int newTrainee(int id_group);
int delTrainee(int id);
int editTrainee(Trainee trainee);
bool isArchivedTrainee(int id);
};
#endif // INTERFACEDATABASELMS_H