From 83cb8bf5a59caabb1d5248c9dee5416ce5ed7565 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Fri, 5 Sep 2025 16:41:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BA=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B8=D0=BD=D0=B3=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=93=D0=A3=D0=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataBaseLMS/databaselms_trainees.cpp | 37 +++++++++++++++++++ DataBaseLMS/timingoftrainee.h | 3 +- DataBaseLMS/trainee.cpp | 5 +++ DataBaseLMS/trainee.h | 1 + .../Core/recognizesystem.cpp | 13 +++++++ ServerLMS/Systems/Parsers/dbanswerparser.cpp | 10 +++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/DataBaseLMS/databaselms_trainees.cpp b/DataBaseLMS/databaselms_trainees.cpp index e447ab0..2262514 100644 --- a/DataBaseLMS/databaselms_trainees.cpp +++ b/DataBaseLMS/databaselms_trainees.cpp @@ -8,8 +8,12 @@ QList DataBaseLMS::selectAllTrainees() { + bool resBool = false; + QList listTrainees; + resBool = db->transaction(); + QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, " "groups.group_id, groups.name, " "computers.computer_id, computers.name, computers.ip_address, " @@ -43,9 +47,42 @@ QList DataBaseLMS::selectAllTrainees() Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom); trainee.setComputer(computer); + //Тайминг + TimingOfTrainee timing(trainee.getID()); + + QString queryStrSELtiming = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.fk_trainee_id " + "FROM public.timings " + "WHERE fk_trainee_id = '%1'").arg(trainee.getID()); + + QSqlQuery querySelTiming = QSqlQuery(*db); + + if(queryExec(queryStrSELtiming, &querySelTiming)) + { + if (querySelTiming.first()) + {//Тайминг + timing.setID(querySelTiming.value(0).toInt()); + timing.setEntryTime(querySelTiming.value(1).toDateTime()); + timing.setExitTime(querySelTiming.value(2).toDateTime()); + timing.setOperatingTime(querySelTiming.value(3).toTime()); + timing.setTraineeID(querySelTiming.value(4).toInt()); + } + + trainee.setTiming(timing); + } + else + { + resBool = db->rollback(); + return QList(); + } + listTrainees.append(trainee); } } + else + { + resBool = db->rollback(); + return QList(); + } return listTrainees; } diff --git a/DataBaseLMS/timingoftrainee.h b/DataBaseLMS/timingoftrainee.h index 5ef9af5..13b64dd 100644 --- a/DataBaseLMS/timingoftrainee.h +++ b/DataBaseLMS/timingoftrainee.h @@ -3,8 +3,9 @@ #include #include +#include "DataBaseLMS_global.h" -class TimingOfTrainee +class DATABASELMS_EXPORT TimingOfTrainee { public: TimingOfTrainee(int trainee_id); diff --git a/DataBaseLMS/trainee.cpp b/DataBaseLMS/trainee.cpp index 747d42c..9ce6803 100644 --- a/DataBaseLMS/trainee.cpp +++ b/DataBaseLMS/trainee.cpp @@ -8,3 +8,8 @@ Trainee::Trainee(): { } + +void Trainee::setTiming(TimingOfTrainee timing) +{ + this->timing = timing; +} diff --git a/DataBaseLMS/trainee.h b/DataBaseLMS/trainee.h index f66b17c..c08aea4 100644 --- a/DataBaseLMS/trainee.h +++ b/DataBaseLMS/trainee.h @@ -20,6 +20,7 @@ public: Computer getComputer(){return computer;} TimingOfTrainee getTiming(){return timing;} + void setTiming(TimingOfTrainee timing); private: Group group; diff --git a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp index 933bb2a..016386c 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp +++ b/InstructorsAndTrainees/connectorToServer/Core/recognizesystem.cpp @@ -5,6 +5,7 @@ #include #include "instructor.h" #include "tasksAmmFim.h" +#include "timingoftrainee.h" RecognizeSystem::RecognizeSystem(QObject *parent): @@ -699,6 +700,18 @@ void RecognizeSystem::xmlParserQueryToDB(PacketType packetType, QByteArray array //trainee.setComputer() //trainee.setTasks() + + //Тайминг + QDomNode timingNode = traineeNode.firstChildElement("timing"); + + TimingOfTrainee timing(trainee.getID()); + timing.setEntryTimeS(timingNode.toElement().attribute("entryTime")); + timing.setExitTimeS(timingNode.toElement().attribute("exitTime")); + timing.setOperatingTimeS(timingNode.toElement().attribute("operatingTime")); + + trainee.setTiming(timing); + + listTrainees.append(trainee); } } diff --git a/ServerLMS/Systems/Parsers/dbanswerparser.cpp b/ServerLMS/Systems/Parsers/dbanswerparser.cpp index 78d35cd..0e2a3be 100644 --- a/ServerLMS/Systems/Parsers/dbanswerparser.cpp +++ b/ServerLMS/Systems/Parsers/dbanswerparser.cpp @@ -83,6 +83,16 @@ QByteArray DBAnswerParser::listTrainees(bool result, QList *listTrainee traineeNode.toElement().setAttribute("group_trainee", trainee.getGroup().getID()); traineeNode.toElement().setAttribute("computer_trainee", trainee.getComputer().getID()); //trainee.setTasks() + + //Тайминг + QDomNode timingNode = commonDOM.createElement("timing"); + traineeNode.appendChild(timingNode); + + TimingOfTrainee timing = trainee.getTiming(); + + timingNode.toElement().setAttribute("entryTime", timing.getEntryTimeS()); + timingNode.toElement().setAttribute("exitTime", timing.getExitTimeS()); + timingNode.toElement().setAttribute("operatingTime", timing.getOperatingTimeS()); } dataParser->saveDOMtoXML("ListTrainees.xml", &commonDOM);