Files
RRJServer/LibInstructorsAndTrainees/tasks/checkertask.cpp
2025-12-18 11:27:29 +03:00

262 lines
7.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "checkertask.h"
#include "specialmessagebox.h"
#include "ui_checkertask.h"
#include "fimtaskswidget.h"
CheckerTask::CheckerTask(ConnectorToServer* connectorToServer, TypeChecker type, QWidget *parent) :
QWidget(parent),
ui(new Ui::CheckerTask),
connectorToServer(connectorToServer),
fimTasksWidget(nullptr),
flChanged(false),
id_task(0),
type(TypeChecker::fim_check)
{
ui->setupUi(this);
ui->btnNew->setObjectName("btnNew");
ui->btnCheckup->setObjectName("btnCheckup");
ui->btnWrong->setObjectName("btnWrong");
ui->btnCompleted->setObjectName("btnCompleted");
this->type = type;
if(type == TypeChecker::fim_check)
{
fimTasksWidget = new FIMtasksWidget(nullptr, TypeListTreeAMMFIM::listOneTask, this);
ui->verticalLayout_3->addWidget(fimTasksWidget);
ui->lblName->setVisible(false);
ui->lblDMcode->setVisible(false);
ui->plainText->setReadOnly(true);
ui->plainText->setObjectName("plainText");
}
else if(type == TypeChecker::amm_check)
{
ui->plainText->setVisible(false);
ui->label->setVisible(false);
ui->btnWrong->setEnabled(false);
ui->btnCheckup->setEnabled(false);
}
}
CheckerTask::~CheckerTask()
{
if(fimTasksWidget)
{
delete fimTasksWidget;
fimTasksWidget = nullptr;
}
delete ui;
}
void CheckerTask::closeEvent(QCloseEvent *event)
{
}
void CheckerTask::setTask(TaskAmmFim* task)
{
this->task = *task;
id_task = task->getID();
if(type == TypeChecker::fim_check)
{
//Задача
fimTasksWidget->setOneTaskFim(&this->task);
//Репорт
outReport(this->task.report);
}
else if(type == TypeChecker::amm_check)
{
/*
if(this->task.status == "new")
ui->btnCompleted->setEnabled(true);
else
ui->btnWrong->setEnabled(true);
*/
ui->lblName->setText(task->ammProcedure.title);
ui->lblDMcode->setText(task->ammProcedure.dmCode);
}
//Статус
if(this->task.status == "completed")
{
ui->lblStatusCurrText->setText(tr("completed"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png")));
}
else if(this->task.status == "failed")
{
ui->lblStatusCurrText->setText(tr("failed"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleRed.png")));
}
else if(this->task.status == "checkup")
{
ui->lblStatusCurrText->setText(tr("checkup"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleYellow.png")));
}
else
{
ui->lblStatusCurrText->setText(tr("new"));
ui->lblStatusCurrIco->setPixmap(QPixmap(QStringLiteral(":/resources/icons/new.png")));
}
}
TaskAmmFim CheckerTask::getTask()
{
return this->task;
}
void CheckerTask::setModule(Module *module)
{
this->module = *module;
id_task = this->module.getID();
}
void CheckerTask::outReport(FIMReport report)
{
QString str;
/*
str = QString("<b>Report ID: %1</b>").arg(QString::number(report.id));
ui->plainText->appendHtml(str);
ui->plainText->appendHtml("<br>");
*/
for(FIMReportItem item : report.itemList)
{
/*
//Item ID
str = QString("<p>Item ID: %1</p>").arg(QString::number(item.id));
ui->plainText->appendHtml(str);
*/
//Title
str = QString("<b>%1</b>").arg(item.procedure.title);
ui->plainText->appendHtml(str);
//DMcode
str = QString("<p>%1</p>").arg(item.procedure.dmCode);
ui->plainText->appendHtml(str);
//Result
str = item.procedure.result;
if(str == "viewed")
str = tr("viewed");
else if(str == "completed")
str = tr("completed");
str = QString("<p>%1</p>").arg(str);
ui->plainText->appendHtml(str);
//Text
str = QString("<p style=\"color:green;\">%1</p>").arg(item.text);
ui->plainText->appendHtml(str);
ui->plainText->appendHtml("<br>");
}
}
//НЕВЕРНО
void CheckerTask::on_btnWrong_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "failed";
msgString = tr("Change task status?\nThe status will be set:\n'failed'");
}
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
//ВЫПОЛНЕНО
void CheckerTask::on_btnCompleted_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
else if(type == TypeChecker::amm_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "completed";
msgString = tr("Change task status?\nThe status will be set:\n'completed'");
}
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
//НОВАЯ
void CheckerTask::on_btnNew_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "new";
msgString = tr("Change task status?\nThe status will be set:\n'new'");
}
else if(type == TypeChecker::amm_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE;
status = "new";
msgString = tr("Change task status?\nThe status will be set:\n'new'");
}
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}
//НА ПРОВЕРКЕ
void CheckerTask::on_btnCheckup_clicked()
{
TypeQueryToDB typeQuery;
QString status;
QString msgString;
if(type == TypeChecker::fim_check)
{
typeQuery = TypeQueryToDB::TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE;
status = "checkup";
msgString = tr("Change task status?\nThe status will be set:\n'checkup'");
}
if(SpecMsgBox::WarningYesNo(this, msgString) == QDialog::Accepted)
{
connectorToServer->sendQueryToDB(typeQuery, id_task, (void*)&status);
this->parentWidget()->close();
flChanged = true;
}
}