before interface 13.11.2024

This commit is contained in:
krivoshein
2024-11-13 09:54:35 +03:00
parent f4ca58ce91
commit 61aaac2b1c
62 changed files with 1233 additions and 1047 deletions

View File

@@ -6,8 +6,6 @@ DataBaseInstructors::DataBaseInstructors(DataBaseLMS* dbLMS):
adminMode(false)
{
this->dbLMS = dbLMS;
LoadInstructorsPSQL();
}
DataBaseInstructors::~DataBaseInstructors()
@@ -15,229 +13,91 @@ DataBaseInstructors::~DataBaseInstructors()
}
void DataBaseInstructors::LoadInstructorsPSQL()
{
listOfInstructors.clear();
listOfInstructors = dbLMS->selectAllInstructors();
QApplication::beep();
}
bool DataBaseInstructors::AuthorizationInstructor(QString login, QString password)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
if(! dbLMS->transactionBegin())
return false;
if(int id = dbLMS->selectInstructorID(login, password))
{
if(listOfInstructors[i].getArchived())
continue;
if(listOfInstructors[i].getLogin() == login && listOfInstructors[i].getPassword() == password)
{
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(true);
int id = dbLMS->updateInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return true;
}
else
return false;
}
if(dbLMS->updateInstructorLoggedIn(id, true))
return dbLMS->transactionEnd();
}
dbLMS->transactionEnd();
return false;
}
bool DataBaseInstructors::deAuthorizationInstructor(QString login)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
if(! dbLMS->transactionBegin())
return false;
if(int id = dbLMS->selectInstructorID(login))
{
if(listOfInstructors[i].getArchived())
continue;
if(listOfInstructors[i].getLogin() == login)
{
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(false);
int id = dbLMS->updateInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return true;
}
else
return false;
}
if(dbLMS->updateInstructorLoggedIn(id, false))
return dbLMS->transactionEnd();
}
dbLMS->transactionEnd();
return false;
}
QList<Instructor> DataBaseInstructors::getListInstructors()
{
return dbLMS->selectAllInstructors();
}
Instructor DataBaseInstructors::getInstructor(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i];
}
return Instructor();
return dbLMS->selectInstructor(id);
}
QString DataBaseInstructors::getNameInstructorByLogin(QString login)
{
for(Instructor instructor : listOfInstructors)
{
if(instructor.getLogin() == login)
return instructor.getName();
}
return QString(QStringLiteral(""));
}
/*
QString DataBaseInstructors::getAuthorizedInstructorName()
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getLoggedIn())
return listOfInstructors[i].getName();
}
return QStringLiteral("");
}*/
int DataBaseInstructors::newInstructor()
{
Instructor instructor;
instructor.setName(generateDefaultNameInstructor());
instructor.setLogin(generateDefaultLoginInstructor());
instructor.setPassword(QStringLiteral("<password>"));
instructor.setIsAdmin(false);
instructor.setArchived(false);
instructor.setLoggedIn(false);
int id = dbLMS->insertInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return id;
}
else
return 0;
return dbLMS->insertInstructor();
}
int DataBaseInstructors::deleteInstructor(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
{
int id_del = dbLMS->deleteInstructor(id);
if(id_del)
{
LoadInstructorsPSQL();
return id_del;
}
else
return 0;
}
}
return 0;
return dbLMS->deleteInstructor(id);
}
int DataBaseInstructors::editInstructor(Instructor instructor)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
//Проверка дублирования логина и имени
QList<Instructor> listInstructors = dbLMS->selectAllInstructors();
for(Instructor exist_instructor : listInstructors)
{
if(listOfInstructors[i].getID() == instructor.getID())
{
if( (!checkExistNameInstructor(instructor.getName()) || instructor.getName() == listOfInstructors[i].getName()) &&
(!checkExistLoginInstructor(instructor.getLogin()) || instructor.getLogin() == listOfInstructors[i].getLogin()) )
{
int id = dbLMS->updateInstructor(instructor);
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;
}
if(id)
{
LoadInstructorsPSQL();
return id;
}
else
return 0;
}
if(instructor.getName() == exist_instructor.getName() && instructor.getID() != exist_instructor.getID())
{//Имя уже существует
QMessageBox::warning(nullptr, tr("Editing warning!"),
tr("An existing instructor name has been entered."));
//return 0;
}
}
return 0;
return dbLMS->updateInstructor(instructor);
}
bool DataBaseInstructors::isAdmin(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getIsAdmin();
}
return false;
return dbLMS->selectInstructorIsAdmin(id);
}
bool DataBaseInstructors::isArchived(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getArchived();
}
return false;
return dbLMS->selectInstructorArchived(id);
}
QString DataBaseInstructors::generateDefaultNameInstructor()
bool DataBaseInstructors::existLogin(QString login)
{
int numInstructor = 0;
QString name;
do
{
name = QStringLiteral("<") + tr("Instructor") + QStringLiteral(" ") + QString::number(++numInstructor) + QStringLiteral(">");
}while(checkExistNameInstructor(name));
return name;
}
bool DataBaseInstructors::checkExistNameInstructor(QString name)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
return true;
}
return false;
}
QString DataBaseInstructors::generateDefaultLoginInstructor()
{
int numInstructor = 0;
QString login;
do
{
login = QStringLiteral("<I") + QString::number(++numInstructor) + QStringLiteral(">");
}while(checkExistLoginInstructor(login));
return login;
}
bool DataBaseInstructors::checkExistLoginInstructor(QString login)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getLogin() == login)
return true;
}
return false;
}