mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Merge branch 'DEV' into draft-send-contacts
This commit is contained in:
@@ -25,6 +25,8 @@ add_library(DataBaseLMS SHARED
|
|||||||
tasksAmmFim.cpp
|
tasksAmmFim.cpp
|
||||||
tasksAmmFim.h
|
tasksAmmFim.h
|
||||||
typeQueryToDB.h
|
typeQueryToDB.h
|
||||||
|
timingoftrainee.cpp
|
||||||
|
timingoftrainee.h
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)
|
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)
|
||||||
|
|||||||
@@ -1691,6 +1691,56 @@ int DataBaseLMS::updateTrainee(Trainee trainee)
|
|||||||
return queryExecInt(queryStr);
|
return queryExecInt(queryStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DataBaseLMS::insertTimingTrainee(int id_trainee)
|
||||||
|
{
|
||||||
|
QString queryStr = QString("INSERT INTO public.timings (entry_time, exit_time, operating_time, timing_trainee) "
|
||||||
|
"VALUES (DEFAULT, DEFAULT, DEFAULT, %1) "
|
||||||
|
"RETURNING timings.timing_id").arg(
|
||||||
|
QString::number(id_trainee));
|
||||||
|
|
||||||
|
return queryExecInt(queryStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
|
||||||
|
{
|
||||||
|
QString queryStr = QString("UPDATE public.timings "
|
||||||
|
"SET entry_time = '%1', exit_time = '%2', operating_time = '%3', timing_trainee = %4 "
|
||||||
|
"WHERE timing_id = %5 "
|
||||||
|
"RETURNING timings.timing_id").arg(
|
||||||
|
timing.getEntryTimeS(),
|
||||||
|
timing.getExitTimeS(),
|
||||||
|
timing.getOperatingTimeS(),
|
||||||
|
QString::number(id_trainee),
|
||||||
|
QString::number(timing.getID()) );
|
||||||
|
|
||||||
|
return queryExecInt(queryStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
|
||||||
|
{
|
||||||
|
TimingOfTrainee timing(id_trainee);
|
||||||
|
|
||||||
|
QString queryStr = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.timing_trainee "
|
||||||
|
"FROM public.timings "
|
||||||
|
"WHERE timing_trainee = '%1'").arg(id_trainee);
|
||||||
|
|
||||||
|
QSqlQuery querySel = QSqlQuery(*db);
|
||||||
|
|
||||||
|
if(queryExec(queryStr, &querySel))
|
||||||
|
{
|
||||||
|
if (querySel.first())
|
||||||
|
{//Тайминг
|
||||||
|
timing.setID(querySel.value(0).toInt());
|
||||||
|
timing.setEntryTime(querySel.value(1).toDateTime());
|
||||||
|
timing.setExitTime(querySel.value(2).toDateTime());
|
||||||
|
timing.setOperatingTime(querySel.value(3).toTime());
|
||||||
|
timing.setTraineeID(querySel.value(4).toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return timing;
|
||||||
|
}
|
||||||
|
|
||||||
int DataBaseLMS::queryExecInt(QString queryStr)
|
int DataBaseLMS::queryExecInt(QString queryStr)
|
||||||
{
|
{
|
||||||
QSqlQuery query = QSqlQuery(*db);
|
QSqlQuery query = QSqlQuery(*db);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "trainee.h"
|
#include "trainee.h"
|
||||||
#include "group.h"
|
#include "group.h"
|
||||||
#include "tasksAmmFim.h"
|
#include "tasksAmmFim.h"
|
||||||
|
#include "timingoftrainee.h"
|
||||||
|
|
||||||
class DataBaseSettings
|
class DataBaseSettings
|
||||||
{
|
{
|
||||||
@@ -101,6 +102,11 @@ protected:
|
|||||||
int deleteTrainee(int id_trainee);
|
int deleteTrainee(int id_trainee);
|
||||||
int updateTrainee(Trainee trainee);
|
int updateTrainee(Trainee trainee);
|
||||||
|
|
||||||
|
//Тайминг
|
||||||
|
int insertTimingTrainee(int id_trainee);
|
||||||
|
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
|
||||||
|
TimingOfTrainee selectTimingTrainee(int id_trainee);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DataBaseSettings getDataBaseSettings();
|
DataBaseSettings getDataBaseSettings();
|
||||||
int queryExecInt(QString queryStr);
|
int queryExecInt(QString queryStr);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QSqlError>
|
#include <QSqlError>
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QTime>
|
||||||
#include "interfacedatabaselms.h"
|
#include "interfacedatabaselms.h"
|
||||||
|
|
||||||
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
|
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
|
||||||
@@ -218,6 +220,46 @@ bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
|
|||||||
return updateAllTraineesLoggedIn(false);
|
return updateAllTraineesLoggedIn(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int InterfaceDataBaseLMS::entryTraineeOnSimulator(int id_trainee)
|
||||||
|
{
|
||||||
|
TimingOfTrainee timing(id_trainee);
|
||||||
|
|
||||||
|
timing = selectTimingTrainee(id_trainee);
|
||||||
|
|
||||||
|
if(!timing.getID())
|
||||||
|
{//Еще нет записи
|
||||||
|
int timing_id = insertTimingTrainee(id_trainee);
|
||||||
|
timing.setID(timing_id);
|
||||||
|
|
||||||
|
if(!timing_id)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
timing.fixEntry();
|
||||||
|
|
||||||
|
return updateTimingTrainee(id_trainee, timing);
|
||||||
|
}
|
||||||
|
|
||||||
|
int InterfaceDataBaseLMS::exitTraineeFromSimulator(int id_trainee)
|
||||||
|
{
|
||||||
|
TimingOfTrainee timing(id_trainee);
|
||||||
|
|
||||||
|
timing = selectTimingTrainee(id_trainee);
|
||||||
|
|
||||||
|
if(!timing.getID())
|
||||||
|
{//Еще нет записи
|
||||||
|
int timing_id = insertTimingTrainee(id_trainee);
|
||||||
|
timing.setID(timing_id);
|
||||||
|
|
||||||
|
if(!timing_id)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
timing.fixExit();
|
||||||
|
|
||||||
|
return updateTimingTrainee(id_trainee, timing);
|
||||||
|
}
|
||||||
|
|
||||||
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
|
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
|
||||||
{
|
{
|
||||||
return selectTraineeNameOnComputer(computer_name);
|
return selectTraineeNameOnComputer(computer_name);
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ public:
|
|||||||
bool deAuthorizationTrainee(QString login);
|
bool deAuthorizationTrainee(QString login);
|
||||||
bool deAuthorizationAllTrainees();
|
bool deAuthorizationAllTrainees();
|
||||||
|
|
||||||
|
//Регистрация тайминга Обучаемого
|
||||||
|
int entryTraineeOnSimulator(int id_trainee);
|
||||||
|
int exitTraineeFromSimulator(int id_trainee);
|
||||||
|
|
||||||
|
|
||||||
//void setTasks(QString login, QStringList tasks);
|
//void setTasks(QString login, QStringList tasks);
|
||||||
|
|
||||||
QString getNameTraineeOnComputer(QString computer_name);
|
QString getNameTraineeOnComputer(QString computer_name);
|
||||||
|
|||||||
71
DataBaseLMS/timingoftrainee.cpp
Normal file
71
DataBaseLMS/timingoftrainee.cpp
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
#include "timingoftrainee.h"
|
||||||
|
|
||||||
|
TimingOfTrainee::TimingOfTrainee(int trainee_id):
|
||||||
|
timing_id(0),
|
||||||
|
trainee_id(trainee_id)
|
||||||
|
{
|
||||||
|
//QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||||
|
dataTimeNull = QDateTime::fromString("2000-01-01 00:00:00.000", "yyyy-MM-dd hh:mm:ss.zzz");
|
||||||
|
setOperatingTime(QTime::fromString("00:00:00"));
|
||||||
|
setEntryTime(dataTimeNull);
|
||||||
|
setExitTime(dataTimeNull);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TimingOfTrainee::setEntryTimeS(QString entry_time)
|
||||||
|
{
|
||||||
|
entryTime_str = entry_time;
|
||||||
|
entryTime = QDateTime::fromString(entry_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::setEntryTime(QDateTime entry_time)
|
||||||
|
{
|
||||||
|
entryTime = entry_time;
|
||||||
|
entryTime_str = entry_time.toString("yyyy-MM-dd hh:mm:ss.zzz");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TimingOfTrainee::setExitTimeS(QString exit_time)
|
||||||
|
{
|
||||||
|
exitTime_str = exit_time;
|
||||||
|
exitTime = QDateTime::fromString(exit_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::setExitTime(QDateTime exit_time)
|
||||||
|
{
|
||||||
|
exitTime = exit_time;
|
||||||
|
exitTime_str = exit_time.toString("yyyy-MM-dd hh:mm:ss.zzz");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TimingOfTrainee::setOperatingTimeS(QString operating_time)
|
||||||
|
{
|
||||||
|
operatingTime_str = operating_time;
|
||||||
|
operatingTime = QTime::fromString(operating_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::setOperatingTime(QTime operating_time)
|
||||||
|
{
|
||||||
|
operatingTime = operating_time;
|
||||||
|
operatingTime_str = operating_time.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::fixEntry()
|
||||||
|
{
|
||||||
|
QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||||
|
setEntryTime(dataTimeCurr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::fixExit()
|
||||||
|
{
|
||||||
|
QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||||
|
setExitTime(dataTimeCurr);
|
||||||
|
if(entryTime != dataTimeNull)
|
||||||
|
calculateOperatingTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimingOfTrainee::calculateOperatingTime()
|
||||||
|
{
|
||||||
|
int cntSec = entryTime.secsTo(exitTime);
|
||||||
|
setOperatingTime(getOperatingTime().addSecs(cntSec));
|
||||||
|
}
|
||||||
60
DataBaseLMS/timingoftrainee.h
Normal file
60
DataBaseLMS/timingoftrainee.h
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#ifndef TIMINGOFTRAINEE_H
|
||||||
|
#define TIMINGOFTRAINEE_H
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QDateTime>
|
||||||
|
|
||||||
|
class TimingOfTrainee
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TimingOfTrainee(int trainee_id);
|
||||||
|
|
||||||
|
void setID(int timing_id){this->timing_id = timing_id;}
|
||||||
|
int getID(){return timing_id;}
|
||||||
|
|
||||||
|
void setTraineeID(int trainee_id){this->trainee_id = trainee_id;}
|
||||||
|
int getTraineeID(){return trainee_id;}
|
||||||
|
|
||||||
|
|
||||||
|
void setEntryTimeS(QString entry_time);
|
||||||
|
void setEntryTime(QDateTime entry_time);
|
||||||
|
|
||||||
|
QString getEntryTimeS(){return entryTime_str;}
|
||||||
|
QDateTime getEntryTime(){return entryTime;}
|
||||||
|
|
||||||
|
|
||||||
|
void setExitTimeS(QString exit_time);
|
||||||
|
void setExitTime(QDateTime exit_time);
|
||||||
|
|
||||||
|
QString getExitTimeS(){return exitTime_str;}
|
||||||
|
QDateTime getExitTime(){return exitTime;}
|
||||||
|
|
||||||
|
|
||||||
|
void setOperatingTimeS(QString operating_time);
|
||||||
|
void setOperatingTime(QTime operating_time);
|
||||||
|
|
||||||
|
QString getOperatingTimeS(){return operatingTime_str;}
|
||||||
|
QTime getOperatingTime(){return operatingTime;}
|
||||||
|
|
||||||
|
void fixEntry();
|
||||||
|
void fixExit();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void calculateOperatingTime();
|
||||||
|
|
||||||
|
private:
|
||||||
|
int timing_id;
|
||||||
|
int trainee_id;
|
||||||
|
|
||||||
|
QString entryTime_str; //"yyyy-MM-dd hh:mm:ss.zzz"
|
||||||
|
QString exitTime_str; //"yyyy-MM-dd hh:mm:ss.zzz"
|
||||||
|
QString operatingTime_str; //"hh:mm:ss"
|
||||||
|
|
||||||
|
QDateTime entryTime;
|
||||||
|
QDateTime exitTime;
|
||||||
|
QTime operatingTime;
|
||||||
|
|
||||||
|
QDateTime dataTimeNull;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TIMINGOFTRAINEE_H
|
||||||
@@ -96,6 +96,16 @@ public:
|
|||||||
isLoggedIn = value;
|
isLoggedIn = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setAccessType(QString type)
|
||||||
|
{
|
||||||
|
accessType = type;
|
||||||
|
}
|
||||||
|
QString getAccessType()
|
||||||
|
{
|
||||||
|
return accessType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QString getId()
|
QString getId()
|
||||||
{
|
{
|
||||||
@@ -120,6 +130,7 @@ private:
|
|||||||
bool isUnity = false;
|
bool isUnity = false;
|
||||||
|
|
||||||
TypeClientAutorization TypeClient;
|
TypeClientAutorization TypeClient;
|
||||||
|
QString accessType = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CLIENT_H
|
#endif // CLIENT_H
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void ProcessParser::initialize(ProcessingSystem *processingSystem)
|
|||||||
this->processingSystem = processingSystem;
|
this->processingSystem = processingSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessParser::read(ClientHandler *client, QByteArray array)
|
void ProcessParser::slot_read(ClientHandler *client, QByteArray array)
|
||||||
{
|
{
|
||||||
QXmlStreamReader xmlReader(array);
|
QXmlStreamReader xmlReader(array);
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,9 @@ class ProcessParser : public QObject
|
|||||||
public:
|
public:
|
||||||
explicit ProcessParser(QObject *parent = nullptr);
|
explicit ProcessParser(QObject *parent = nullptr);
|
||||||
void initialize(ProcessingSystem *processingSystem);
|
void initialize(ProcessingSystem *processingSystem);
|
||||||
void read(ClientHandler *client, QByteArray array);
|
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void slot_read(ClientHandler *client, QByteArray array);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sigLogMessage(QString text);
|
void sigLogMessage(QString text);
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent):
|
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent):
|
||||||
QObject(parent),
|
QObject(parent),
|
||||||
providerDBLMS(nullptr),
|
updateController(nullptr),
|
||||||
updateController(nullptr)
|
providerDBLMS(nullptr)
|
||||||
{
|
{
|
||||||
this->providerDBLMS = providerDBLMS;
|
this->providerDBLMS = providerDBLMS;
|
||||||
this->updateController = updateController;
|
this->updateController = updateController;
|
||||||
@@ -58,6 +58,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
|
|||||||
{//Авторизуется инструктор
|
{//Авторизуется инструктор
|
||||||
|
|
||||||
client->getClient()->setLogin(clientAutorization.Login);
|
client->getClient()->setLogin(clientAutorization.Login);
|
||||||
|
client->getClient()->setAccessType("instructor");
|
||||||
client->getClient()->setTypeClient(clientAutorization.TypeClient);
|
client->getClient()->setTypeClient(clientAutorization.TypeClient);
|
||||||
|
|
||||||
emit sigUpdateListClients();
|
emit sigUpdateListClients();
|
||||||
@@ -73,6 +74,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
|
|||||||
{//Авторизуется обучаемый
|
{//Авторизуется обучаемый
|
||||||
|
|
||||||
client->getClient()->setLogin(clientAutorization.Login);
|
client->getClient()->setLogin(clientAutorization.Login);
|
||||||
|
client->getClient()->setAccessType("trainee");
|
||||||
emit sigUpdateListClients();
|
emit sigUpdateListClients();
|
||||||
|
|
||||||
//KAV redact
|
//KAV redact
|
||||||
@@ -120,6 +122,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
|
|||||||
{//ДеАвторизуется обучаемый
|
{//ДеАвторизуется обучаемый
|
||||||
|
|
||||||
client->getClient()->setLogin("");
|
client->getClient()->setLogin("");
|
||||||
|
client->getClient()->setAccessType("");
|
||||||
emit sigUpdateListClients();
|
emit sigUpdateListClients();
|
||||||
|
|
||||||
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
|
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
|
||||||
@@ -128,6 +131,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
|
|||||||
{//ДеАвторизуется инструктор
|
{//ДеАвторизуется инструктор
|
||||||
|
|
||||||
client->getClient()->setLogin("");
|
client->getClient()->setLogin("");
|
||||||
|
client->getClient()->setAccessType("");
|
||||||
emit sigUpdateListClients();
|
emit sigUpdateListClients();
|
||||||
|
|
||||||
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
|
arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login);
|
||||||
@@ -160,6 +164,38 @@ void ProcessingSystem::processingClientDeAutorization(QString login)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProcessingSystem::processingEntryUnityClient(ClientHandler *client)
|
||||||
|
{
|
||||||
|
QString login = client->getClient()->getLogin();
|
||||||
|
QString accessType = client->getClient()->getAccessType();
|
||||||
|
|
||||||
|
if(accessType == "trainee")
|
||||||
|
{
|
||||||
|
int id_trainee = providerDBLMS->getIdTraineeByLogin(login);
|
||||||
|
providerDBLMS->entryTraineeOnSimulator(id_trainee);
|
||||||
|
}
|
||||||
|
else if(accessType == "instructor")
|
||||||
|
{
|
||||||
|
//Здесь пока ничего не происходит
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProcessingSystem::processingExitUnityClient(ClientHandler *client)
|
||||||
|
{
|
||||||
|
QString login = client->getClient()->getLogin();
|
||||||
|
QString accessType = client->getClient()->getAccessType();
|
||||||
|
|
||||||
|
if(accessType == "trainee")
|
||||||
|
{
|
||||||
|
int id_trainee = providerDBLMS->getIdTraineeByLogin(login);
|
||||||
|
providerDBLMS->exitTraineeFromSimulator(id_trainee);
|
||||||
|
}
|
||||||
|
else if(accessType == "instructor")
|
||||||
|
{
|
||||||
|
//Здесь пока ничего не происходит
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQueryToDB clientQueryToDB, int id, void* data)
|
void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQueryToDB clientQueryToDB, int id, void* data)
|
||||||
{
|
{
|
||||||
qDebug() << "ProcessingQueryThread " << QThread::currentThreadId();
|
qDebug() << "ProcessingQueryThread " << QThread::currentThreadId();
|
||||||
@@ -487,9 +523,24 @@ void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotif
|
|||||||
sendTaskListToUnity(client);
|
sendTaskListToUnity(client);
|
||||||
client->getSocket()->flush();
|
client->getSocket()->flush();
|
||||||
}
|
}
|
||||||
|
else if(clientNotify.Code == commandStartTimerClient)
|
||||||
|
{
|
||||||
|
//Фиксируем время входа Юнити-клиента
|
||||||
|
if (client->getClient()->getIsUnity())
|
||||||
|
{
|
||||||
|
processingEntryUnityClient(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(clientNotify.Code == commandDisableClient)
|
else if(clientNotify.Code == commandDisableClient)
|
||||||
{
|
{
|
||||||
qDebug() << "processing thread: " << QThread::currentThreadId();
|
qDebug() << "processing thread: " << QThread::currentThreadId();
|
||||||
|
|
||||||
|
//Фиксируем время выхода Юнити-клиента
|
||||||
|
if (client->getClient()->getIsUnity())
|
||||||
|
{
|
||||||
|
processingExitUnityClient(client);
|
||||||
|
}
|
||||||
|
|
||||||
client->sendDisable();
|
client->sendDisable();
|
||||||
}
|
}
|
||||||
else if(clientNotify.Code == commandGetServerDataList)
|
else if(clientNotify.Code == commandGetServerDataList)
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ public:
|
|||||||
|
|
||||||
ClientHandler* getUnityClientById(int id);
|
ClientHandler* getUnityClientById(int id);
|
||||||
void processingClientDeAutorization(QString login);
|
void processingClientDeAutorization(QString login);
|
||||||
|
|
||||||
|
void processingEntryUnityClient(ClientHandler *client);
|
||||||
|
void processingExitUnityClient(ClientHandler *client);
|
||||||
signals:
|
signals:
|
||||||
void sigUpdateListClients();
|
void sigUpdateListClients();
|
||||||
void sigListsInstructorsTraineesChanged();
|
void sigListsInstructorsTraineesChanged();
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void RecognizeSystem::initialize(UpdateController *updateController,DataParser*
|
|||||||
connect(this,&RecognizeSystem::sigChangeVersion,updateController,&UpdateController::changeAssetVersion,Qt::AutoConnection);
|
connect(this,&RecognizeSystem::sigChangeVersion,updateController,&UpdateController::changeAssetVersion,Qt::AutoConnection);
|
||||||
connect(this,&RecognizeSystem::sigDeleteVersion,updateController,&UpdateController::deleteAssetVersion,Qt::AutoConnection);
|
connect(this,&RecognizeSystem::sigDeleteVersion,updateController,&UpdateController::deleteAssetVersion,Qt::AutoConnection);
|
||||||
connect(this,&RecognizeSystem::sigCopyVersion,updateController,&UpdateController::createCopyVersion,Qt::AutoConnection);
|
connect(this,&RecognizeSystem::sigCopyVersion,updateController,&UpdateController::createCopyVersion,Qt::AutoConnection);
|
||||||
connect(this,&RecognizeSystem::sigXmlParser,dataParser->getProcessParser(),&ProcessParser::read,Qt::DirectConnection);
|
connect(this,&RecognizeSystem::sigXmlParser,dataParser->getProcessParser(),&ProcessParser::slot_read,Qt::DirectConnection);
|
||||||
|
|
||||||
qDebug() << "Recognize init thread ID " << QThread::currentThreadId();
|
qDebug() << "Recognize init thread ID " << QThread::currentThreadId();
|
||||||
}
|
}
|
||||||
@@ -450,6 +450,7 @@ void RecognizeSystem::packetTypeInit(PacketType packet,Client *client)
|
|||||||
else if (packet == PacketType::TYPE_UNITY)
|
else if (packet == PacketType::TYPE_UNITY)
|
||||||
{
|
{
|
||||||
client->setUnity(true);
|
client->setUnity(true);
|
||||||
|
//Фиксируем время входа Юнити-клиента
|
||||||
}
|
}
|
||||||
|
|
||||||
isPackageTypeInited = true;
|
isPackageTypeInited = true;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ private:
|
|||||||
bool isPackageTypeInited;
|
bool isPackageTypeInited;
|
||||||
|
|
||||||
void packetTypeInit(PacketType packet,Client *client);
|
void packetTypeInit(PacketType packet,Client *client);
|
||||||
void packetTypeInit(PacketType type);
|
//void packetTypeInit(PacketType type);
|
||||||
|
|
||||||
bool checkIsChangeable();
|
bool checkIsChangeable();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ static const QString commandGetServerDataList = "GETSERVERDATALIST";
|
|||||||
static const QString commandCheckVersionList = "CHECKVERSIONLIST";
|
static const QString commandCheckVersionList = "CHECKVERSIONLIST";
|
||||||
static const QString commandReadyClient = "READY";
|
static const QString commandReadyClient = "READY";
|
||||||
static const QString commandDisableClient = "DISABLE";
|
static const QString commandDisableClient = "DISABLE";
|
||||||
|
static const QString commandStartTimerClient = "UNITYSTARTTIMER";
|
||||||
static const QString commandDuplicateVerName = "DUPLICATEVERNAME";
|
static const QString commandDuplicateVerName = "DUPLICATEVERNAME";
|
||||||
static const QString commandHashCompleteClient = "HASHSENDCOMPLETE";
|
static const QString commandHashCompleteClient = "HASHSENDCOMPLETE";
|
||||||
static const QString commandCanChangeVersion = "CANCHANGE";
|
static const QString commandCanChangeVersion = "CANCHANGE";
|
||||||
|
|||||||
@@ -222,6 +222,22 @@ bool ProviderDBLMS::deAuthorizationAll()
|
|||||||
return res1 && res2;
|
return res1 && res2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ProviderDBLMS::entryTraineeOnSimulator(int id_trainee)
|
||||||
|
{
|
||||||
|
if(dbLMS->entryTraineeOnSimulator(id_trainee))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ProviderDBLMS::exitTraineeFromSimulator(int id_trainee)
|
||||||
|
{
|
||||||
|
if(dbLMS->exitTraineeFromSimulator(id_trainee))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int ProviderDBLMS::getIdTraineeByLogin(QString login)
|
int ProviderDBLMS::getIdTraineeByLogin(QString login)
|
||||||
{
|
{
|
||||||
int id_trainee = 0;
|
int id_trainee = 0;
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ public:
|
|||||||
//Общая деавторизация
|
//Общая деавторизация
|
||||||
bool deAuthorizationAll();
|
bool deAuthorizationAll();
|
||||||
|
|
||||||
|
//Регистрация тайминга Обучаемого
|
||||||
|
bool entryTraineeOnSimulator(int id_trainee);
|
||||||
|
bool exitTraineeFromSimulator(int id_trainee);
|
||||||
|
|
||||||
//
|
//
|
||||||
int getIdTraineeByLogin(QString login);
|
int getIdTraineeByLogin(QString login);
|
||||||
int getIdInstructorByLogin(QString login);
|
int getIdInstructorByLogin(QString login);
|
||||||
|
|||||||
@@ -132,16 +132,24 @@ bool ServerLMSWidget::stopServer()
|
|||||||
//Закрываем все открытые сокеты
|
//Закрываем все открытые сокеты
|
||||||
foreach(int idSocket, clientsMap.keys())
|
foreach(int idSocket, clientsMap.keys())
|
||||||
{
|
{
|
||||||
clientsMap[idSocket]->sigSendXmlAnswer(arrayAnswer,PacketType::TYPE_XMLANSWER);
|
ClientHandler* clientHandlerOpen = clientsMap[idSocket];
|
||||||
|
|
||||||
|
//Фиксируем время выхода Юнити-клиента
|
||||||
|
if(clientHandlerOpen->getClient()->getIsUnity())
|
||||||
|
{
|
||||||
|
processingSystem->processingExitUnityClient(clientHandlerOpen);
|
||||||
|
}
|
||||||
|
|
||||||
|
clientHandlerOpen->sigSendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER);
|
||||||
//while (!clientsMap[idSocket]->sigSocketFlush()) {}
|
//while (!clientsMap[idSocket]->sigSocketFlush()) {}
|
||||||
|
|
||||||
QString str = QString(arrayAnswer);
|
QString str = QString(arrayAnswer);
|
||||||
emit sigLog("To Client: " + str);
|
emit sigLog("To Client: " + str);
|
||||||
|
|
||||||
//slotDisconnectClient(clientsMap[idSocket]->get, QString peerPort)
|
//slotDisconnectClient(clientsMap[idSocket]->get, QString peerPort)
|
||||||
processingSystem->processingClientDeAutorization(clientsMap[idSocket]->getClient()->getLogin());
|
processingSystem->processingClientDeAutorization(clientHandlerOpen->getClient()->getLogin());
|
||||||
|
|
||||||
clientsMap[idSocket]->sigSocketClose();
|
clientHandlerOpen->sigSocketClose();
|
||||||
//clientsMap.remove(idSocket);
|
//clientsMap.remove(idSocket);
|
||||||
removeClient(idSocket);
|
removeClient(idSocket);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user