#ifndef TASKSAMMFIM_H #define TASKSAMMFIM_H #include #include #include "DataBaseLMS_global.h" struct ModeList { bool demo = false; bool train = false; bool exam = false; bool autoM = false; }; class DATABASELMS_EXPORT SubProc { public: SubProc() { modeListStr = buildCanplay(modeList); }; ~SubProc(){}; public: bool operator==(const SubProc& other) const { // Сравнение членов класса return (this->dmCode == other.dmCode && this->title == other.title && this->modeListStr == other.modeListStr); } public: void setModeList(const ModeList &modeList); ModeList getModeList() const; void setModeListStr(const QString &modeListStr); QString getModeListStr() const; void setDmCode(const QString &value); QString getDmCode() const; void setTitle(const QString &value); QString getTitle() const; public: static QString buildCanplay(ModeList modeList); static ModeList parseCanplay(QString canplay); private: QString dmCode = ""; QString title = ""; ModeList modeList; QString modeListStr = ""; }; class DATABASELMS_EXPORT ProcedureID { public: ProcedureID(){}; ~ProcedureID(){}; public: QString doc; // "amm", "fim" QString dmCode; QString title; QString result; // "" - нет результата, "viewed" - процедура изучена (просмотрена при отсутствующем сценарии), "completed" - выполнена (в т.ч. режим "контроль" сценария) }; class DATABASELMS_EXPORT MalfunctionSign // признак неисправности { public: MalfunctionSign(){}; ~MalfunctionSign(){}; public: void initialize(int type, QString description); public: int type; // "1" - аварийно-сигнальные сообщения, "2" - сообщения БСТО, // "3" - сигнализация СЭИ, "4" - локальная сигнализация, "5" - наблюдаемая неисправность QString description; // описание (напр. "ЭРРД, 25, DOOR_FAIL_TO_CLOSE" - для БСТО) }; class DATABASELMS_EXPORT Malfunction // неисправность { public: Malfunction(){}; ~Malfunction(){}; public: void initialize(QString dmCode, QString num, QString description); void addMalfunctionSign(MalfunctionSign sign); public: QString dmCode; // dmCode процедуры QString num; // номер по-порядку в пункте "2. Возможные причины" процедуры QString description; // описание QList malfunctionSigns;// список соответствующих неисправности признаков }; class DATABASELMS_EXPORT FIMReportItem { public: FIMReportItem(){}; ~FIMReportItem(){}; public: int id = 0; // для идентификации в БД QString text; // текст, вводимый обучаемым ProcedureID procedure; // ссылка на процедуру, при необходимости }; class DATABASELMS_EXPORT FIMReport { public: FIMReport(){}; ~FIMReport(){}; public: int id = 0; // для идентификации в БД QList itemList; }; class DATABASELMS_EXPORT TaskAmmFim { public: TaskAmmFim(){}; ~TaskAmmFim(){}; public: void initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date); void addMalfunction(Malfunction malfunction); public: void setID(int id){this->id = id;}; int getID(){return id;}; public: int id; // для идентификации в БД QString type; // "amm" - процедура из Руководства по технической эксплуатации // "fim" - поиск и устранение неисправностей QString title; // название задания: // для "amm" - берётся из титула процедуры // для "fim" - вводится вручную QString status; // "new" - задание не выполнено // "checkup" - выполнено, на проверке у инструктора (только для "fim") // "failed" - инструктором проверено, выполнено неверно (только для "fim") // "completed" - выполнено корректно QString created_date; // дата создания задания инструктором ("new") // (при записи в базу, даты ставить по времени сервера, а не те, что присланы от клиента) QString changed_date; // дата крайнего изменения статуса ("checkup", "failed", "completed") // amm: ProcedureID ammProcedure; // ссылка на процедуру в AMM // fim: QList malfunctionList; // список неисправностей FIMReport report; // отчет по выполнению "fim" QList listSubProc; static int lastID; }; #endif // TASKSAMMFIM_H