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.h
|
||||
typeQueryToDB.h
|
||||
timingoftrainee.cpp
|
||||
timingoftrainee.h
|
||||
)
|
||||
|
||||
target_link_libraries(DataBaseLMS PRIVATE Qt5::Widgets)
|
||||
|
||||
@@ -1691,6 +1691,56 @@ int DataBaseLMS::updateTrainee(Trainee trainee)
|
||||
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)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "trainee.h"
|
||||
#include "group.h"
|
||||
#include "tasksAmmFim.h"
|
||||
#include "timingoftrainee.h"
|
||||
|
||||
class DataBaseSettings
|
||||
{
|
||||
@@ -101,6 +102,11 @@ protected:
|
||||
int deleteTrainee(int id_trainee);
|
||||
int updateTrainee(Trainee trainee);
|
||||
|
||||
//Тайминг
|
||||
int insertTimingTrainee(int id_trainee);
|
||||
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
|
||||
TimingOfTrainee selectTimingTrainee(int id_trainee);
|
||||
|
||||
private:
|
||||
DataBaseSettings getDataBaseSettings();
|
||||
int queryExecInt(QString queryStr);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include <QMessageBox>
|
||||
#include <QCoreApplication>
|
||||
#include <QSqlError>
|
||||
#include <QDateTime>
|
||||
#include <QTime>
|
||||
#include "interfacedatabaselms.h"
|
||||
|
||||
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget* parent):
|
||||
@@ -218,6 +220,46 @@ bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
|
||||
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)
|
||||
{
|
||||
return selectTraineeNameOnComputer(computer_name);
|
||||
|
||||
@@ -51,6 +51,11 @@ public:
|
||||
bool deAuthorizationTrainee(QString login);
|
||||
bool deAuthorizationAllTrainees();
|
||||
|
||||
//Регистрация тайминга Обучаемого
|
||||
int entryTraineeOnSimulator(int id_trainee);
|
||||
int exitTraineeFromSimulator(int id_trainee);
|
||||
|
||||
|
||||
//void setTasks(QString login, QStringList tasks);
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user