Files
RRJServer/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.cpp
2024-11-06 16:06:32 +03:00

244 lines
5.9 KiB
C++

#include <QMessageBox>
#include <QApplication>
#include "databaseinstructors.h"
DataBaseInstructors::DataBaseInstructors(DataBaseLMS* dbLMS):
adminMode(false)
{
this->dbLMS = dbLMS;
LoadInstructorsPSQL();
}
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(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;
}
}
return false;
}
bool DataBaseInstructors::deAuthorizationInstructor(QString login)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
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;
}
}
return false;
}
Instructor DataBaseInstructors::getInstructor(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i];
}
return Instructor();
}
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;
}
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;
}
int DataBaseInstructors::editInstructor(Instructor instructor)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
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(id)
{
LoadInstructorsPSQL();
return id;
}
else
return 0;
}
}
}
return 0;
}
bool DataBaseInstructors::isAdmin(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getIsAdmin();
}
return false;
}
bool DataBaseInstructors::isArchived(int id)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getArchived();
}
return false;
}
QString DataBaseInstructors::generateDefaultNameInstructor()
{
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;
}