diff --git a/DataBaseLMS/databaselms_tasks.cpp b/DataBaseLMS/databaselms_tasks.cpp index c2d31fa..adc1d1a 100644 --- a/DataBaseLMS/databaselms_tasks.cpp +++ b/DataBaseLMS/databaselms_tasks.cpp @@ -404,7 +404,7 @@ int DataBaseLMS::deleteTaskFIM(int id_task) report_id = queryReportsSEL.value(0).toInt(); } } - if(!report_id) + else { resBool = db->rollback(); return 0; diff --git a/DataBaseLMS/databaselms_trainees.cpp b/DataBaseLMS/databaselms_trainees.cpp index 5a20583..e447ab0 100644 --- a/DataBaseLMS/databaselms_trainees.cpp +++ b/DataBaseLMS/databaselms_trainees.cpp @@ -267,8 +267,8 @@ int DataBaseLMS::deleteTrainee(int id_trainee) int mulf_id = queryMulfSEL.value(0).toInt(); /*Удаление сигналов для этой неисправности*/ - queryStr = QString("DELETE FROM public.mals_signs " - "WHERE mals_signs.fk_mulfunction_id = %1 ").arg( + queryStr = QString("DELETE FROM public.malf_signs " + "WHERE malf_signs.fk_malfunction_id = %1 ").arg( mulf_id); QSqlQuery querySign = QSqlQuery(*db); if(!queryExec(queryStr, &querySign)) diff --git a/DataBaseLMS/interfacedatabaselms.cpp b/DataBaseLMS/interfacedatabaselms.cpp index 32ee3c2..4be22c3 100644 --- a/DataBaseLMS/interfacedatabaselms.cpp +++ b/DataBaseLMS/interfacedatabaselms.cpp @@ -123,37 +123,6 @@ int InterfaceDataBaseLMS::delInstructor(int id) int InterfaceDataBaseLMS::editInstructor(Instructor instructor) { //QMutexLocker mtxLocker(&mtxAccess); - - //Проверка корректности логина, имени, пароля - - if(instructor.getName() == QStringLiteral("")) - {//Имя не корректно! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable instructor name has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(instructor.getLogin() == QStringLiteral("")) - {//Логин не корректен! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable instructor login has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(instructor.getPassword() == QStringLiteral("")) - {//Пароль не корректный! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable instructor password has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(selectUserID(DataBaseLMS::TypeUserDBInstructor, instructor.getLogin()) || selectUserID(DataBaseLMS::TypeUserDBTrainee, instructor.getLogin())) - {//Логин уже существует! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("An existing instructor or trainee login has been entered.\nThe changes will not be accepted.")); - return 0; - } - return updateInstructor(instructor); } @@ -324,26 +293,6 @@ int InterfaceDataBaseLMS::delGroup(int id) int InterfaceDataBaseLMS::editGroup(Group group) { //QMutexLocker mtxLocker(&mtxAccess); - - //Проверка корректности имени - QList listGroups = selectAllGroups(); - for(Group exist_group : listGroups) - { - if(group.getName() == QStringLiteral("")) - {//Имя не корректно! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable group name has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(group.getName() == exist_group.getName() && group.getID() != exist_group.getID()) - {//Имя уже существует - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("An existing group name has been entered.\nThe changes will not be accepted.")); - return 0; - } - } - return updateGroup(group); } @@ -440,37 +389,6 @@ int InterfaceDataBaseLMS::delTrainee(int id) int InterfaceDataBaseLMS::editTrainee(Trainee trainee) { //QMutexLocker mtxLocker(&mtxAccess); - - //Проверка корректности логина, имени, пароля - - if(trainee.getName() == QStringLiteral("")) - {//Имя не корректно! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable trainee name has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(trainee.getLogin() == QStringLiteral("")) - {//Логин не корректен! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable trainee login has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(trainee.getPassword() == QStringLiteral("")) - {//Пароль не корректный! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("Unacceptable trainee password has been entered.\nThe changes will not be accepted.")); - return 0; - } - - if(selectUserID(DataBaseLMS::TypeUserDBInstructor, trainee.getLogin()) || selectUserID(DataBaseLMS::TypeUserDBTrainee, trainee.getLogin())) - {//Логин уже существует! - QMessageBox::critical(ownerWidget, tr("Editing error!"), - tr("An existing instructor or trainee login has been entered.\nThe changes will not be accepted.")); - return 0; - } - return updateTrainee(trainee); } diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp index 71c46db..0236a8d 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.cpp @@ -295,6 +295,16 @@ int ConnectorToServer::getIdTraineeByLogin(QString login) return 0; } +int ConnectorToServer::getIdInstructorByLogin(QString login) +{ + for(Instructor instructor : listInstructors) + { + if(instructor.getLogin() == login) + return instructor.getID(); + } + return 0; +} + void ConnectorToServer::showVersionSelect() { QByteArray answer = dataParser->xmlAnswer_notify(cmd_CheckVersionList); diff --git a/InstructorsAndTrainees/connectorToServer/connectortoserver.h b/InstructorsAndTrainees/connectorToServer/connectortoserver.h index d490fb5..4ffa61a 100644 --- a/InstructorsAndTrainees/connectorToServer/connectortoserver.h +++ b/InstructorsAndTrainees/connectorToServer/connectortoserver.h @@ -60,6 +60,7 @@ public: Group getGroup(int id); int getIdTraineeByLogin(QString login); + int getIdInstructorByLogin(QString login); void showVersionSelect(); void setLoginName(QString name); diff --git a/InstructorsAndTrainees/instructors/editorinstructors.cpp b/InstructorsAndTrainees/instructors/editorinstructors.cpp index 5aceb87..dd8fb02 100644 --- a/InstructorsAndTrainees/instructors/editorinstructors.cpp +++ b/InstructorsAndTrainees/instructors/editorinstructors.cpp @@ -270,7 +270,7 @@ bool EditorInstructors::verifyInstructor(Instructor instructor) { //Проверка корректности логина, имени, пароля - if(instructor.getName() == QStringLiteral("")) + if(instructor.getName() == QStringLiteral("")) {//Имя не корректно! QMessageBox::critical(this, tr("Editing error!"), tr("Unacceptable instructor name has been entered.\nThe changes will not be accepted.")); @@ -292,23 +292,13 @@ bool EditorInstructors::verifyInstructor(Instructor instructor) } - QList listInstructors = connectorToServer->getListInstructors(); - - for(Instructor exist_instructor : listInstructors) - { - if(instructor.getName() == exist_instructor.getName() && instructor.getID() != exist_instructor.getID()) - {//Имя уже существует - QMessageBox::critical(this, tr("Editing error!"), - tr("An existing instructor name has been entered.")); - return false; - } - - if(instructor.getLogin() == exist_instructor.getLogin() && instructor.getID() != exist_instructor.getID()) - {//Логин уже существует! - QMessageBox::critical(this, tr("Editing error!"), - tr("An existing instructor login has been entered.\nThe changes will not be accepted.")); - return false; - } + int user_I = connectorToServer->getIdInstructorByLogin(instructor.getLogin()); + int user_T = connectorToServer->getIdTraineeByLogin(instructor.getLogin()); + if((user_I && (user_I != instructor.getID())) || (user_T && (user_T != instructor.getID()))) + {//Логин уже существует! + QMessageBox::critical(this, tr("Editing error!"), + tr("An existing instructor or trainee login has been entered.\nThe changes will not be accepted.")); + return 0; } return true; diff --git a/InstructorsAndTrainees/trainees/editortrainees.cpp b/InstructorsAndTrainees/trainees/editortrainees.cpp index 0f59340..ccbf4f4 100644 --- a/InstructorsAndTrainees/trainees/editortrainees.cpp +++ b/InstructorsAndTrainees/trainees/editortrainees.cpp @@ -24,6 +24,13 @@ EditorTrainees::EditorTrainees(ConnectorToServer* connectorToServer, bool adminM ui->btnArchive->click(); waitAnimationWidget->setParent(this); + + ui->btnNewGroup->setEnabled(true); + ui->btnDeleteGroup->setEnabled(false); + ui->btnNewTrainee->setEnabled(false); + ui->btnDeleteTrainee->setEnabled(false); + ui->btnToOrFromArchiveTrainee->setEnabled(false); + ui->btnEdit->setEnabled(false); } EditorTrainees::~EditorTrainees() @@ -448,7 +455,7 @@ bool EditorTrainees::verifyTrainee(Trainee trainee) { //Проверка корректности логина, имени, пароля - if(trainee.getName() == QStringLiteral("")) + if(trainee.getName() == QStringLiteral("")) {//Имя не корректно! QMessageBox::critical(this, tr("Editing error!"), tr("Unacceptable trainee name has been entered.\nThe changes will not be accepted.")); @@ -469,23 +476,14 @@ bool EditorTrainees::verifyTrainee(Trainee trainee) return false; } - QList listTrainees = connectorToServer->getListTrainees(); - for(Trainee exist_trainee : listTrainees) - { - if(trainee.getName() == exist_trainee.getName() && trainee.getID() != exist_trainee.getID()) - {//Имя уже существует - QMessageBox::critical(this, tr("Editing error!"), - tr("An existing trainee name has been entered.")); - return false; - } - - if(trainee.getLogin() == exist_trainee.getLogin() && trainee.getID() != exist_trainee.getID()) - {//Логин уже существует! - QMessageBox::critical(this, tr("Editing error!"), - tr("An existing trainee login has been entered.\nThe changes will not be accepted.")); - return false; - } + int user_I = connectorToServer->getIdInstructorByLogin(trainee.getLogin()); + int user_T = connectorToServer->getIdTraineeByLogin(trainee.getLogin()); + if((user_I && (user_I != trainee.getID())) || (user_T && (user_T != trainee.getID()))) + {//Логин уже существует! + QMessageBox::critical(this, tr("Editing error!"), + tr("An existing instructor or trainee login has been entered.\nThe changes will not be accepted.")); + return 0; } return true; diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index 38083bd..5858d02 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -8,10 +8,7 @@ ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateControlle updateController(nullptr), providerDBLMS(nullptr) { - //this->providerDBLMS = providerDBLMS; - - - + this->providerDBLMS = providerDBLMS; this->updateController = updateController; } @@ -20,10 +17,6 @@ void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataPar UpdateController *updateController, ChatSystem *chatSystem) { - this->providerDBLMS = new ProviderDBLMS(/*parent*/nullptr); - this->providerDBLMS->ConnectionToDB(); - this->providerDBLMS->deAuthorizationAll(); - this->commonClientServer = commonClientHandler; this->dataParser = dataParser; this->server = server; diff --git a/ServerLMS/providerdblms.cpp b/ServerLMS/providerdblms.cpp index d851db4..f4e82eb 100644 --- a/ServerLMS/providerdblms.cpp +++ b/ServerLMS/providerdblms.cpp @@ -224,18 +224,32 @@ bool ProviderDBLMS::deAuthorizationAll() bool ProviderDBLMS::entryTraineeOnSimulator(int id_trainee) { + mtxAccess.lock(); if(dbLMS->entryTraineeOnSimulator(id_trainee)) + { + mtxAccess.unlock(); return true; + } else + { + mtxAccess.unlock(); return false; + } } bool ProviderDBLMS::exitTraineeFromSimulator(int id_trainee) { + mtxAccess.lock(); if(dbLMS->exitTraineeFromSimulator(id_trainee)) + { + mtxAccess.unlock(); return true; + } else + { + mtxAccess.unlock(); return false; + } } int ProviderDBLMS::getIdTraineeByLogin(QString login) @@ -348,92 +362,164 @@ QList ProviderDBLMS::GetListAllGroups() int ProviderDBLMS::newInstructor() { - return dbLMS->newInstructor(); + int res = 0; + mtxAccess.lock(); + res = dbLMS->newInstructor(); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::delInstructor(int id) { - return dbLMS->delInstructor(id); + int res = 0; + mtxAccess.lock(); + res = dbLMS->delInstructor(id); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::editInstructor(Instructor instructor) { - return dbLMS->editInstructor(instructor); + int res = 0; + mtxAccess.lock(); + res = dbLMS->editInstructor(instructor); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::newTrainee(int id_group) { - return dbLMS->newTrainee(id_group); + int res = 0; + mtxAccess.lock(); + res = dbLMS->newTrainee(id_group); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::delTrainee(int id) { - return dbLMS->delTrainee(id); + int res = 0; + mtxAccess.lock(); + res = dbLMS->delTrainee(id); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::editTrainee(Trainee trainee) { - return dbLMS->editTrainee(trainee); + int res = 0; + mtxAccess.lock(); + res = dbLMS->editTrainee(trainee); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::newGroup() { - return dbLMS->newGroup(); + int res = 0; + mtxAccess.lock(); + res = dbLMS->newGroup(); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::delGroup(int id) { - return dbLMS->delGroup(id); + int res = 0; + mtxAccess.lock(); + res = dbLMS->delGroup(id); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::editGroup(Group group) { - return dbLMS->editGroup(group); + int res = 0; + mtxAccess.lock(); + res = dbLMS->editGroup(group); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::newTaskAMM(TaskAmmFim task, int id_trainee) { - return dbLMS->newTaskAMM(task, id_trainee); + int res = 0; + mtxAccess.lock(); + res = dbLMS->newTaskAMM(task, id_trainee); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::delTaskAMM(int id) { - return dbLMS->delTaskAMM(id); + int res = 0; + mtxAccess.lock(); + res = dbLMS->delTaskAMM(id); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::editTaskAMM(TaskAmmFim task) { - return dbLMS->editTaskAMM(task); + int res = 0; + mtxAccess.lock(); + res = dbLMS->editTaskAMM(task); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::newTaskFIM(TaskAmmFim task, int id_trainee) { - return dbLMS->newTaskFIM(task, id_trainee); + int res = 0; + mtxAccess.lock(); + res = dbLMS->newTaskFIM(task, id_trainee); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::delTaskFIM(int id) { - return dbLMS->delTaskFIM(id); + int res = 0; + mtxAccess.lock(); + res = dbLMS->delTaskFIM(id); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::editTaskFIM(TaskAmmFim task) { - return dbLMS->editTaskFIM(task); + int res = 0; + mtxAccess.lock(); + res = dbLMS->editTaskFIM(task); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::replaceReportFIM(TaskAmmFim task) { - return dbLMS->replaceReportFIM(task); + int res = 0; + mtxAccess.lock(); + res = dbLMS->replaceReportFIM(task); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::changeStatusTaskFIM(int id_task, QString status) { - return dbLMS->changeStatusTaskFIM(id_task, status); + int res = 0; + mtxAccess.lock(); + res = dbLMS->changeStatusTaskFIM(id_task, status); + mtxAccess.unlock(); + return res; } int ProviderDBLMS::changeStatusTaskAMM(int id_task, QString status) { - return dbLMS->changeStatusTaskAMM(id_task, status); + int res = 0; + mtxAccess.lock(); + res = dbLMS->changeStatusTaskAMM(id_task, status); + mtxAccess.unlock(); + return res; } QList ProviderDBLMS::GetListTasksAMMofTrainee(int id_trainee) diff --git a/ServerLMS/serverlmswidget.cpp b/ServerLMS/serverlmswidget.cpp index 66b0236..f34194b 100644 --- a/ServerLMS/serverlmswidget.cpp +++ b/ServerLMS/serverlmswidget.cpp @@ -16,8 +16,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : loggerThread(nullptr), dataParser(nullptr), processingSystem(nullptr), - updateController(nullptr)//, - //providerDBLMS(nullptr) + updateController(nullptr), + providerDBLMS(nullptr) { ui->setupUi(this); mutex = new QMutex; @@ -37,13 +37,13 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : updateThread = new QThread; loggerThread = new QThread; - //providerDBLMS = new ProviderDBLMS(this); - //providerDBLMS->ConnectionToDB(); - //providerDBLMS->deAuthorizationAll(); + providerDBLMS = new ProviderDBLMS(this); + providerDBLMS->ConnectionToDB(); + providerDBLMS->deAuthorizationAll(); chatSystem = new ChatSystem(); - //connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization); + connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization); assetsManager = new AssetsManager; assetsManager->moveToThread(updateThread); @@ -51,9 +51,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : updateController = new UpdateController; updateController->moveToThread(updateThread); - processingSystem = new ProcessingSystem(/*providerDBLMS*/nullptr, updateController); + processingSystem = new ProcessingSystem(providerDBLMS, updateController); //processingSystem->moveToThread(updateThread); - //providerDBLMS->moveToThread(updateThread); dataParser = new DataParser(assetsManager,processingSystem); diff --git a/ServerLMS/serverlmswidget.h b/ServerLMS/serverlmswidget.h index 789ced0..77b8357 100644 --- a/ServerLMS/serverlmswidget.h +++ b/ServerLMS/serverlmswidget.h @@ -103,7 +103,7 @@ private: CommonClientHandler *commonClientHandler; ChatSystem *chatSystem; - //ProviderDBLMS* providerDBLMS; + ProviderDBLMS* providerDBLMS; bool first = true; // для тестов Unity