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