diff --git a/DataBaseLMS/typeQueryToDB.h b/DataBaseLMS/typeQueryToDB.h index 215a523..7bc4df0 100644 --- a/DataBaseLMS/typeQueryToDB.h +++ b/DataBaseLMS/typeQueryToDB.h @@ -19,8 +19,8 @@ enum TypeQueryToDB{ TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE, TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE, - TYPE_QUERY_DELETE_TASK_AMM_TO_TRAINEE, - TYPE_QUERY_DELETE_TASK_FIM_TO_TRAINEE + TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE, + TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE }; #endif // TYPEQUERYTODB_H diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index dd74f12..51da65e 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -300,7 +300,7 @@ void AMMtasksWidget::on_btnDelete_clicked() if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) { - connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DELETE_TASK_AMM_TO_TRAINEE, id); + connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE, id); } } } diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index 35e05e2..9cdf4b0 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -438,7 +438,7 @@ void FIMtasksWidget::on_btnDelete_clicked() if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) { - connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DELETE_TASK_FIM_TO_TRAINEE, id); + connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE, id); } } } diff --git a/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/Systems/processingsystem.cpp index b30998a..6b0be10 100644 --- a/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/Systems/processingsystem.cpp @@ -255,160 +255,79 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE: { - int id_new; - id_new = providerDBLMS->newTaskAMM(*(TaskAmmFim*)data, id); - - if(id_new) - {//Отправка списка задач AMM клиенту Юнити - QString login = providerDBLMS->getLoginTraineeById(id); - //Проходим все открытые сокеты, ищем нужный - foreach(int idSocket, server->getClientsMap().keys()) - { - ClientHandler *handler = server->getClientsMap().value(idSocket); - if(handler->getClient()->getLogin() == login) - { - if(handler->getClient()->getIsUnity()) - {//Отправляем ему - //AMM - QList listTasksAMM = providerDBLMS->GetListTasksAMMofTrainee(id); - QByteArray arrayAnswerTasksAMM = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasksAMM, id); - handler->sendXmlAnswer(arrayAnswerTasksAMM, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE); - } - } - } - } - - /* - if(id_new) + if(int id_new = providerDBLMS->newTaskAMM(*(TaskAmmFim*)data, id)) { - (*(TaskAmmFim*)data).setID(id_new); - providerDBLMS->editTaskAMM(*(TaskAmmFim*)data); - } - */ - //emit sigTasksChanged(); - //break; - } - case TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE: - { - QList listTasks = providerDBLMS->GetListTasksAMMofTrainee(id); - - arrayAnswer = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasks, id); - client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE); - - break; - } - - case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: - { - int id_new; - id_new = providerDBLMS->newTaskFIM(*(TaskAmmFim*)data, id); - - if(id_new) - {//Отправка списка задач FIM клиенту Юнити - QString login = providerDBLMS->getLoginTraineeById(id); - //Проходим все открытые сокеты, ищем нужный - foreach(int idSocket, server->getClientsMap().keys()) - { - ClientHandler *handler = server->getClientsMap().value(idSocket); - if(handler->getClient()->getLogin() == login) - { - if(handler->getClient()->getIsUnity()) - {//Отправляем ему - //FIM - QList listTasksFIM = providerDBLMS->GetListTasksFIMofTrainee(id); - QByteArray arrayAnswerFIM = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasksFIM, id); - handler->sendXmlAnswer(arrayAnswerFIM, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE); - } - } - } - } - - /* - if(id_new) - { - (*(TaskAmmFim*)data).setID(id_new); - providerDBLMS->editTaskFIM(*(TaskAmmFim*)data); - } - */ - //emit sigTasksChanged(); - //break; - } - - case TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE: - { - QList listTasks = providerDBLMS->GetListTasksFIMofTrainee(id); - - arrayAnswer = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasks, id); - client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE); - - break; - } - - case TypeQueryToDB::TYPE_QUERY_DELETE_TASK_AMM_TO_TRAINEE: - { - int id_trainee = providerDBLMS->delTaskAMM(id); - if(id_trainee) - { - QList listTasks = providerDBLMS->GetListTasksAMMofTrainee(id_trainee); - arrayAnswer = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasks, id_trainee); - client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE); + //Отправка списка задач AMM клиенту GUI + sendListTasksAMMofTraineetoClient(client, id); //Отправка списка задач AMM клиенту Юнити - QString login = providerDBLMS->getLoginTraineeById(id_trainee); - //Проходим все открытые сокеты, ищем нужный - foreach(int idSocket, server->getClientsMap().keys()) - { - ClientHandler *handler = server->getClientsMap().value(idSocket); - if(handler->getClient()->getLogin() == login) - { - if(handler->getClient()->getIsUnity()) - {//Отправляем ему - //AMM - QList listTasksAMM = providerDBLMS->GetListTasksAMMofTrainee(id_trainee); - QByteArray arrayAnswerTasksAMM = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasksAMM, id_trainee); - handler->sendXmlAnswer(arrayAnswerTasksAMM, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE); - } - } + if(ClientHandler* handler = getUnityClientById(id)) + {//Есть такой + sendListTasksAMMofTraineetoClient(handler, id); + } + } + break; + } + case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: + { + if(int id_new = providerDBLMS->newTaskFIM(*(TaskAmmFim*)data, id)) + { + //Отправка списка задач FIM клиенту GUI + sendListTasksFIMofTraineetoClient(client, id); + + //Отправка списка задач FIM клиенту Юнити + if(ClientHandler* handler = getUnityClientById(id)) + {//Есть такой + sendListTasksFIMofTraineetoClient(handler, id); } } break; } - case TypeQueryToDB::TYPE_QUERY_DELETE_TASK_FIM_TO_TRAINEE: + case TypeQueryToDB::TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE: { - int id_trainee = providerDBLMS->delTaskFIM(id); - if(id_trainee) - { - QList listTasks = providerDBLMS->GetListTasksFIMofTrainee(id_trainee); - arrayAnswer = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasks, id_trainee); - client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE); + //Отправка списка задач AMM клиенту GUI + sendListTasksAMMofTraineetoClient(client, id); + break; + } + case TypeQueryToDB::TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE: + { + //Отправка списка задач FIM клиенту GUI + sendListTasksFIMofTraineetoClient(client, id); + break; + } - //Отправка списка задач FIM клиенту Юнити - QString login = providerDBLMS->getLoginTraineeById(id_trainee); - //Проходим все открытые сокеты, ищем нужный - foreach(int idSocket, server->getClientsMap().keys()) - { - ClientHandler *handler = server->getClientsMap().value(idSocket); - if(handler->getClient()->getLogin() == login) - { - if(handler->getClient()->getIsUnity()) - {//Отправляем ему - //FIM - QList listTasksFIM = providerDBLMS->GetListTasksFIMofTrainee(id_trainee); - QByteArray arrayAnswerTasksFIM = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasksFIM, id_trainee); - handler->sendXmlAnswer(arrayAnswerTasksFIM, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE); - } - } + case TypeQueryToDB::TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE: + { + if(int id_trainee = providerDBLMS->delTaskAMM(id)) + { + //Отправка списка задач AMM клиенту GUI + sendListTasksAMMofTraineetoClient(client, id_trainee); + + //Отправка списка задач AMM клиенту Юнити + if(ClientHandler* handler = getUnityClientById(id_trainee)) + {//Есть такой + sendListTasksAMMofTraineetoClient(handler, id_trainee); } } break; } + case TypeQueryToDB::TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE: + { + if(int id_trainee = providerDBLMS->delTaskFIM(id)) + { + //Отправка списка задач FIM клиенту GUI + sendListTasksFIMofTraineetoClient(client, id_trainee); + + //Отправка списка задач FIM клиенту Юнити + if(ClientHandler* handler = getUnityClientById(id_trainee)) + {//Есть такой + sendListTasksFIMofTraineetoClient(handler, id_trainee); + } + } + break; + } } - - //client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_DB_LIST_INSTRUCTORS); - - //QString str = QString(arrayAnswer); - //logger->addTextToLogger("To Client: " + str); } void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, ClientQueryTasksXML clientQueryTasksXML) @@ -500,5 +419,38 @@ void ProcessingSystem::setCurrentDataInfo(DataInfo *dataInfo) emit sigSetData(dataInfo); } +void ProcessingSystem::sendListTasksAMMofTraineetoClient(ClientHandler *client, int id_trainee) +{ + QList listTasks = providerDBLMS->GetListTasksAMMofTrainee(id_trainee); + QByteArray arrayAnswer = dataParser->DbAnswer()->listTasksAMMofTrainee(true, &listTasks, id_trainee); + client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE); +} + +void ProcessingSystem::sendListTasksFIMofTraineetoClient(ClientHandler *client, int id_trainee) +{ + QList listTasks = providerDBLMS->GetListTasksFIMofTrainee(id_trainee); + QByteArray arrayAnswer = dataParser->DbAnswer()->listTasksFIMofTrainee(true, &listTasks, id_trainee); + client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE); +} + +ClientHandler *ProcessingSystem::getUnityClientById(int id) +{ + QString login = providerDBLMS->getLoginTraineeById(id); + + //Проходим все открытые сокеты, ищем нужный + foreach(int idSocket, server->getClientsMap().keys()) + { + ClientHandler *handler = server->getClientsMap().value(idSocket); + if(handler->getClient()->getLogin() == login) + { + if(handler->getClient()->getIsUnity()) + { + return handler; + } + } + } + return nullptr; +} + diff --git a/ServerLMS/Systems/processingsystem.h b/ServerLMS/Systems/processingsystem.h index d497eac..cb73318 100644 --- a/ServerLMS/Systems/processingsystem.h +++ b/ServerLMS/Systems/processingsystem.h @@ -39,6 +39,10 @@ public: void processingClientNotify(ClientHandler *client, ClientNotify clientNotify); void setCurrentDataInfo(DataInfo *dataInfo); + + void sendListTasksAMMofTraineetoClient(ClientHandler* client, int id_trainee); + void sendListTasksFIMofTraineetoClient(ClientHandler* client, int id_trainee); + ClientHandler* getUnityClientById(int id); signals: void sigUpdateListClients(); void sigListsInstructorsTraineesChanged();