#include #include #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("")); 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(""); }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; }