mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
247 lines
6.2 KiB
C++
247 lines
6.2 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);
|
|
|
|
bool result = dbLMS->updateInstructor(instructor);
|
|
|
|
if(result)
|
|
{
|
|
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);
|
|
|
|
bool result = dbLMS->updateInstructor(instructor);
|
|
|
|
if(result)
|
|
{
|
|
LoadInstructorsPSQL();
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
Instructor DataBaseInstructors::getInstructor(QString name)
|
|
{
|
|
//Инструкторы
|
|
for(int i = 0; i < listOfInstructors.count(); i++)
|
|
{
|
|
if(listOfInstructors[i].getName() == name)
|
|
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("");
|
|
}
|
|
|
|
QString DataBaseInstructors::newInstructor()
|
|
{
|
|
Instructor instructor;
|
|
instructor.setName(generateDefaultNameInstructor());
|
|
instructor.setLogin(generateDefaultLoginInstructor());
|
|
instructor.setPassword(QStringLiteral("<password>"));
|
|
instructor.setIsAdmin(false);
|
|
instructor.setArchived(false);
|
|
instructor.setLoggedIn(false);
|
|
|
|
bool result = dbLMS->insertInstructor(instructor);
|
|
|
|
if(result)
|
|
{
|
|
//listOfInstructors.append(instructor);
|
|
LoadInstructorsPSQL();
|
|
return instructor.getName();
|
|
}
|
|
else
|
|
return QStringLiteral("");
|
|
}
|
|
|
|
void DataBaseInstructors::deleteInstructor(QString name)
|
|
{
|
|
//Инструкторы
|
|
for(int i = 0; i < listOfInstructors.count(); i++)
|
|
{
|
|
if(listOfInstructors[i].getName() == name)
|
|
{
|
|
int id = listOfInstructors[i].getID();
|
|
|
|
bool result = dbLMS->deleteInstructor(id);
|
|
|
|
if(result)
|
|
LoadInstructorsPSQL();
|
|
//listOfInstructors.removeAt(i);
|
|
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool DataBaseInstructors::editInstructor(QString name, Instructor instructor)
|
|
{
|
|
//Инструкторы
|
|
for(int i = 0; i < listOfInstructors.count(); i++)
|
|
{
|
|
if(listOfInstructors[i].getName() == name)
|
|
{
|
|
if( (!checkExistNameInstructor(instructor.getName()) || instructor.getName() == name) &&
|
|
(!checkExistLoginInstructor(instructor.getLogin()) || instructor.getLogin() == listOfInstructors[i].getLogin()) )
|
|
{
|
|
//instructor.setID(listOfInstructors[i].getID());
|
|
|
|
bool result = dbLMS->updateInstructor(instructor);
|
|
|
|
if(result)
|
|
{
|
|
//listOfInstructors.replace(i, instructor);
|
|
LoadInstructorsPSQL();
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool DataBaseInstructors::isAdmin(QString name)
|
|
{
|
|
//Инструкторы
|
|
for(int i = 0; i < listOfInstructors.count(); i++)
|
|
{
|
|
if(listOfInstructors[i].getName() == name)
|
|
return listOfInstructors[i].getIsAdmin();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool DataBaseInstructors::isArchived(QString name)
|
|
{
|
|
//Инструкторы
|
|
for(int i = 0; i < listOfInstructors.count(); i++)
|
|
{
|
|
if(listOfInstructors[i].getName() == name)
|
|
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;
|
|
}
|