From 0c696e03d9b6220b853824f8d7fd7dcd8c80cac8 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Wed, 30 Jul 2025 17:06:57 +0300 Subject: [PATCH] Refact --- DataBaseLMS/databaselms.cpp | 14 +++--- DataBaseLMS/interfacedatabaselms.cpp | 58 +++--------------------- DataBaseLMS/timingoftrainee.cpp | 68 +++++++++++++++++++++++++++- DataBaseLMS/timingoftrainee.h | 54 ++++++++++++++++------ 4 files changed, 118 insertions(+), 76 deletions(-) diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index a32aa1a..b145d92 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -1707,9 +1707,9 @@ int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing) "SET entry_time = '%1', exit_time = '%2', operating_time = '%3', timing_trainee = %4 " "WHERE timing_id = %5 " "RETURNING timings.timing_id").arg( - timing.getEntryTime(), - timing.getExitTime(), - timing.getOperatingTime(), + timing.getEntryTimeS(), + timing.getExitTimeS(), + timing.getOperatingTimeS(), QString::number(id_trainee), QString::number(timing.getID()) ); @@ -1718,7 +1718,7 @@ int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing) TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee) { - TimingOfTrainee timing; + TimingOfTrainee timing(id_trainee); QString queryStr; @@ -1733,9 +1733,9 @@ TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee) if (querySel.first()) {//Тайминг timing.setID(querySel.value(0).toInt()); - timing.setEntryTime(querySel.value(1).toDateTime().toString()); - timing.setExitTime(querySel.value(2).toDateTime().toString()); - timing.setOperatingTime(querySel.value(3).toTime().toString()); + timing.setEntryTime(querySel.value(1).toDateTime()); + timing.setExitTime(querySel.value(2).toDateTime()); + timing.setOperatingTimeS(querySel.value(3).toTime().toString()); timing.setTraineeID(querySel.value(4).toInt()); } } diff --git a/DataBaseLMS/interfacedatabaselms.cpp b/DataBaseLMS/interfacedatabaselms.cpp index f3e42a8..4ef57b5 100644 --- a/DataBaseLMS/interfacedatabaselms.cpp +++ b/DataBaseLMS/interfacedatabaselms.cpp @@ -222,80 +222,34 @@ bool InterfaceDataBaseLMS::deAuthorizationAllTrainees() int InterfaceDataBaseLMS::entryTraineeOnSimulator(int id_trainee) { - TimingOfTrainee timing; - - QDateTime dataTime_entry = QDateTime::currentDateTime(); - QDateTime dataTime_exit; - int interval; - - QString dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz"); - QString dataTimeStr_exit = ""; - QString intervalStr = ""; + TimingOfTrainee timing(id_trainee); timing = selectTimingTrainee(id_trainee); - if(timing.getID()) - {//Запись уже есть в базе - dataTime_exit = QDateTime::fromString(timing.getExitTime()); - dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz"); - intervalStr = timing.getOperatingTime(); - } - else + if(!timing.getID()) {//Еще нет записи int timing_id = insertTimingTrainee(id_trainee); timing.setID(timing_id); - - dataTime_exit = dataTime_entry; - interval = dataTime_entry.secsTo(dataTime_exit); - dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz"); - intervalStr = QString::number(interval); } - timing.setTraineeID(id_trainee); - timing.setEntryTime(dataTimeStr_entry); - timing.setExitTime(dataTimeStr_exit); - timing.setOperatingTime(intervalStr); + timing.fixEntry(); return updateTimingTrainee(id_trainee, timing); } int InterfaceDataBaseLMS::exitTraineeFromSimulator(int id_trainee) { - TimingOfTrainee timing; - - QDateTime dataTime_entry; - QDateTime dataTime_exit = QDateTime::currentDateTime(); - int interval; - - QString dataTimeStr_entry = ""; - QString dataTimeStr_exit = dataTime_exit.toString("yyyy-MM-dd hh:mm:ss.zzz"); - QString intervalStr = ""; + TimingOfTrainee timing(id_trainee); timing = selectTimingTrainee(id_trainee); - if(timing.getID()) - {//Запись уже есть в базе - dataTime_entry = QDateTime::fromString(timing.getEntryTime()); - dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz"); - interval = QTime::fromString(timing.getOperatingTime()).second() + dataTime_entry.secsTo(dataTime_exit); - //interval = dataTime_entry.secsTo(dataTime_exit); - intervalStr = QString::number(interval); - } - else + if(!timing.getID()) {//Еще нет записи int timing_id = insertTimingTrainee(id_trainee); timing.setID(timing_id); - - dataTime_entry = dataTime_exit; - interval = dataTime_entry.secsTo(dataTime_exit); - dataTimeStr_entry = dataTime_entry.toString("yyyy-MM-dd hh:mm:ss.zzz"); - intervalStr = QString::number(interval); } - timing.setTraineeID(id_trainee); - timing.setEntryTime(dataTimeStr_entry); - timing.setExitTime(dataTimeStr_exit); - timing.setOperatingTime(intervalStr); + timing.fixExit(); return updateTimingTrainee(id_trainee, timing); } diff --git a/DataBaseLMS/timingoftrainee.cpp b/DataBaseLMS/timingoftrainee.cpp index b69f436..afca5a0 100644 --- a/DataBaseLMS/timingoftrainee.cpp +++ b/DataBaseLMS/timingoftrainee.cpp @@ -1,6 +1,70 @@ #include "timingoftrainee.h" -TimingOfTrainee::TimingOfTrainee() +TimingOfTrainee::TimingOfTrainee(int trainee_id): + timing_id(0), + trainee_id(trainee_id) { - + QDateTime dataTimeCurr = QDateTime::currentDateTime(); + setOperatingTime(0); + setEntryTime(dataTimeCurr); + setExitTime(dataTimeCurr); +} + + +void TimingOfTrainee::setEntryTimeS(QString entry_time) +{ + str_entryTime = entry_time; + entryTime = QDateTime::fromString(entry_time); +} + +void TimingOfTrainee::setEntryTime(QDateTime entry_time) +{ + entryTime = entry_time; + str_entryTime = entry_time.toString("yyyy-MM-dd hh:mm:ss.zzz"); +} + + +void TimingOfTrainee::setExitTimeS(QString exit_time) +{ + str_exitTime = exit_time; + exitTime = QDateTime::fromString(exit_time); +} + +void TimingOfTrainee::setExitTime(QDateTime exit_time) +{ + exitTime = exit_time; + str_exitTime = exit_time.toString("yyyy-MM-dd hh:mm:ss.zzz"); +} + + +void TimingOfTrainee::setOperatingTimeS(QString operating_time) +{ + str_operatingTime = operating_time; + QTime timeLoc = QTime::fromString(operating_time); + operatingTime = timeLoc.hour() * 3600 + timeLoc.minute() * 60 + timeLoc.second(); +} + +void TimingOfTrainee::setOperatingTime(int operating_time) +{ + operatingTime = operating_time; + str_operatingTime = QTime::fromString("00:00:00").addSecs(operating_time).toString(); +} + +void TimingOfTrainee::fixEntry() +{ + QDateTime dataTimeCurr = QDateTime::currentDateTime(); + setEntryTime(dataTimeCurr); +} + +void TimingOfTrainee::fixExit() +{ + QDateTime dataTimeCurr = QDateTime::currentDateTime(); + setExitTime(dataTimeCurr); + calculateOperatingTime(); +} + +void TimingOfTrainee::calculateOperatingTime() +{ + int cntSec = entryTime.secsTo(exitTime); + setOperatingTime(getOperatingTime() + cntSec); } diff --git a/DataBaseLMS/timingoftrainee.h b/DataBaseLMS/timingoftrainee.h index d588eb7..28ded68 100644 --- a/DataBaseLMS/timingoftrainee.h +++ b/DataBaseLMS/timingoftrainee.h @@ -2,33 +2,57 @@ #define TIMINGOFTRAINEE_H #include +#include class TimingOfTrainee { public: - TimingOfTrainee(); + TimingOfTrainee(int trainee_id); void setID(int timing_id){this->timing_id = timing_id;} int getID(){return timing_id;} - void setEntryTime(QString entry_time){this->entry_time = entry_time;} - QString getEntryTime(){return entry_time;} - - void setExitTime(QString exit_time){this->exit_time = exit_time;} - QString getExitTime(){return exit_time;} - - void setOperatingTime(QString operating_time){this->operating_time = operating_time;} - QString getOperatingTime(){return operating_time;} - 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 str_entryTime;} + QDateTime getEntryTime(){return entryTime;} + + + void setExitTimeS(QString exit_time); + void setExitTime(QDateTime exit_time); + + QString getExitTimeS(){return str_exitTime;} + QDateTime getExitTime(){return exitTime;} + + + void setOperatingTimeS(QString operating_time); + void setOperatingTime(int operating_time); + + QString getOperatingTimeS(){return str_operatingTime;} + int getOperatingTime(){return operatingTime;} + + void fixEntry(); + void fixExit(); + private: - int timing_id = 0; - QString entry_time = ""; - QString exit_time = ""; - QString operating_time = ""; - int trainee_id = 0; + void calculateOperatingTime(); + +private: + int timing_id; + int trainee_id; + + QString str_entryTime; //"yyyy-MM-dd hh:mm:ss.zzz" + QString str_exitTime; //"yyyy-MM-dd hh:mm:ss.zzz" + QString str_operatingTime; //"hh:mm:ss" + + QDateTime entryTime; + QDateTime exitTime; + int operatingTime; //в секундах }; #endif // TIMINGOFTRAINEE_H