From 42e06d100540c8c763bb802044a813caf7f259e1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 4 Aug 2021 14:01:21 +0200 Subject: [PATCH] Exam Table/Model/Controller --- README.md | 12 ++++++ controllers/ExamMemberRank.php | 21 ++++++++++ controllers/ExamTyperating.php | 21 ++++++++++ controllers/exammemberrank/_list_toolbar.htm | 17 +++++++++ controllers/exammemberrank/config_list.yaml | 11 ++++++ controllers/exammemberrank/index.htm | 1 + controllers/examtyperating/_list_toolbar.htm | 17 +++++++++ controllers/examtyperating/config_list.yaml | 11 ++++++ controllers/examtyperating/index.htm | 1 + lang/en/lang.php | 2 + models/ExamMemberRank.php | 37 ++++++++++++++++++ models/ExamTyperating.php | 37 ++++++++++++++++++ models/ExamTyperatingQuestion.php | 4 ++ models/exammemberrank/columns.yaml | 18 +++++++++ models/examtyperating/columns.yaml | 18 +++++++++ plugin.yaml | 8 ++++ updates/builder_table_create_exams.php | 40 ++++++++++++++++++++ updates/version.yaml | 2 + 18 files changed, 278 insertions(+) create mode 100644 controllers/ExamMemberRank.php create mode 100644 controllers/ExamTyperating.php create mode 100644 controllers/exammemberrank/_list_toolbar.htm create mode 100644 controllers/exammemberrank/config_list.yaml create mode 100644 controllers/exammemberrank/index.htm create mode 100644 controllers/examtyperating/_list_toolbar.htm create mode 100644 controllers/examtyperating/config_list.yaml create mode 100644 controllers/examtyperating/index.htm create mode 100644 models/ExamMemberRank.php create mode 100644 models/ExamTyperating.php create mode 100644 models/exammemberrank/columns.yaml create mode 100644 models/examtyperating/columns.yaml create mode 100644 updates/builder_table_create_exams.php diff --git a/README.md b/README.md index aa6ccbb..b495ab0 100644 --- a/README.md +++ b/README.md @@ -26,3 +26,15 @@ ## ExamTyperatingAnswer - BelongsTo ExamTyperatingQuestion + +## ExamMemberRank + +- BelongsTo MemberRank +- **TODO** BelongsTo Member (External DB) +- **TODO** HasMany ExamMemberRankQuestion + +## ExamTyperating + +- BelongsTo Typerating +- **TODO** BelongsTo Member (External DB) +- **TODO** HasMany ExamTyperatingQuestion diff --git a/controllers/ExamMemberRank.php b/controllers/ExamMemberRank.php new file mode 100644 index 0000000..d468caa --- /dev/null +++ b/controllers/ExamMemberRank.php @@ -0,0 +1,21 @@ +where('member_rank_id', '<>', null); + } +} diff --git a/controllers/ExamTyperating.php b/controllers/ExamTyperating.php new file mode 100644 index 0000000..ec5425f --- /dev/null +++ b/controllers/ExamTyperating.php @@ -0,0 +1,21 @@ +where('typerating_id', '<>', null); + } +} diff --git a/controllers/exammemberrank/_list_toolbar.htm b/controllers/exammemberrank/_list_toolbar.htm new file mode 100644 index 0000000..c651229 --- /dev/null +++ b/controllers/exammemberrank/_list_toolbar.htm @@ -0,0 +1,17 @@ +
+ +
diff --git a/controllers/exammemberrank/config_list.yaml b/controllers/exammemberrank/config_list.yaml new file mode 100644 index 0000000..8a38fda --- /dev/null +++ b/controllers/exammemberrank/config_list.yaml @@ -0,0 +1,11 @@ +list: $/germanairlinesva/schooling/models/exammemberrank/columns.yaml +modelClass: GermanAirlinesVa\Schooling\Models\ExamMemberRank +title: Exams Member Rank +noRecordsMessage: 'backend::lang.list.no_records' +showSetup: true +showCheckboxes: true +recordsPerPage: 20 +toolbar: + buttons: list_toolbar + search: + prompt: 'backend::lang.list.search_prompt' diff --git a/controllers/exammemberrank/index.htm b/controllers/exammemberrank/index.htm new file mode 100644 index 0000000..ea43a36 --- /dev/null +++ b/controllers/exammemberrank/index.htm @@ -0,0 +1 @@ +listRender() ?> diff --git a/controllers/examtyperating/_list_toolbar.htm b/controllers/examtyperating/_list_toolbar.htm new file mode 100644 index 0000000..c651229 --- /dev/null +++ b/controllers/examtyperating/_list_toolbar.htm @@ -0,0 +1,17 @@ +
+ +
diff --git a/controllers/examtyperating/config_list.yaml b/controllers/examtyperating/config_list.yaml new file mode 100644 index 0000000..c3ac8a8 --- /dev/null +++ b/controllers/examtyperating/config_list.yaml @@ -0,0 +1,11 @@ +list: $/germanairlinesva/schooling/models/examtyperating/columns.yaml +modelClass: GermanAirlinesVa\Schooling\Models\ExamTyperating +title: Exams Typerating +noRecordsMessage: 'backend::lang.list.no_records' +showSetup: true +showCheckboxes: true +recordsPerPage: 20 +toolbar: + buttons: list_toolbar + search: + prompt: 'backend::lang.list.search_prompt' diff --git a/controllers/examtyperating/index.htm b/controllers/examtyperating/index.htm new file mode 100644 index 0000000..ea43a36 --- /dev/null +++ b/controllers/examtyperating/index.htm @@ -0,0 +1 @@ +listRender() ?> diff --git a/lang/en/lang.php b/lang/en/lang.php index 4943086..3d9eaff 100644 --- a/lang/en/lang.php +++ b/lang/en/lang.php @@ -15,6 +15,8 @@ 'exam_question_typerating' => 'Exam Typerating Questions', 'exam_answer_rank' => 'Exam Member Rank Answers', 'exam_answer_typerating' => 'Exam Typerating Answers', + 'exam_member_rank' => 'Exams Member Rank', + 'exam_typerating' => 'Exams Typerating', ], 'permissions' => [ 'tab' => 'German Airlines VA - Schooling', diff --git a/models/ExamMemberRank.php b/models/ExamMemberRank.php new file mode 100644 index 0000000..dcaae07 --- /dev/null +++ b/models/ExamMemberRank.php @@ -0,0 +1,37 @@ + 'required', + 'member_rank_id' => 'required', + 'start' => 'required', + 'status' => 'required', + ]; + + public $belongsTo = [ + 'member_rank' => 'GermanAirlinesVa\Schooling\Models\MemberRank', + ]; +} diff --git a/models/ExamTyperating.php b/models/ExamTyperating.php new file mode 100644 index 0000000..6603279 --- /dev/null +++ b/models/ExamTyperating.php @@ -0,0 +1,37 @@ + 'required', + 'typerating_id' => 'required', + 'start' => 'required', + 'status' => 'required', + ]; + + public $belongsTo = [ + 'typerating' => 'GermanAirlinesVa\Schooling\Models\Typerating', + ]; +} diff --git a/models/ExamTyperatingQuestion.php b/models/ExamTyperatingQuestion.php index 1df7d8a..0fbded9 100644 --- a/models/ExamTyperatingQuestion.php +++ b/models/ExamTyperatingQuestion.php @@ -31,6 +31,10 @@ class ExamTyperatingQuestion extends Model 'text' => 'required', ]; + public $hasMany = [ + 'exam_answers' => 'GermanAirlinesVa\Schooling\Models\ExamTyperatingAnswer', + ]; + public $belongsTo = [ 'typerating' => 'GermanAirlinesVa\Schooling\Models\Typerating', ]; diff --git a/models/exammemberrank/columns.yaml b/models/exammemberrank/columns.yaml new file mode 100644 index 0000000..a43f2f9 --- /dev/null +++ b/models/exammemberrank/columns.yaml @@ -0,0 +1,18 @@ +columns: + id: + label: id + type: number + member_id: + label: member_id + type: number + member_rank: + label: member_rank + type: text + relation: member_rank + valueFrom: name + start: + label: start + type: datetime + status: + label: status + type: text diff --git a/models/examtyperating/columns.yaml b/models/examtyperating/columns.yaml new file mode 100644 index 0000000..aa525fb --- /dev/null +++ b/models/examtyperating/columns.yaml @@ -0,0 +1,18 @@ +columns: + id: + label: id + type: number + member_id: + label: member_id + type: number + typerating: + label: typerating + type: text + relation: typerating + valueFrom: name + start: + label: start + type: datetime + status: + label: status + type: text diff --git a/plugin.yaml b/plugin.yaml index 7b273f4..98be21c 100644 --- a/plugin.yaml +++ b/plugin.yaml @@ -36,6 +36,14 @@ navigation: label: 'germanairlinesva.schooling::lang.menu.exam_answer_typerating' url: germanairlinesva/schooling/examtyperatinganswer icon: icon-check + side-menu-item7: + label: 'germanairlinesva.schooling::lang.menu.exam_member_rank' + url: germanairlinesva/schooling/exammemberrank + icon: icon-file-text + side-menu-item8: + label: 'germanairlinesva.schooling::lang.menu.exam_typerating' + url: germanairlinesva/schooling/examtyperating + icon: icon-file-text permissions: schooling: tab: 'germanairlinesva.schooling::lang.permissions.tab' diff --git a/updates/builder_table_create_exams.php b/updates/builder_table_create_exams.php new file mode 100644 index 0000000..3a29f89 --- /dev/null +++ b/updates/builder_table_create_exams.php @@ -0,0 +1,40 @@ +create('exams', function ($table) { + $table->engine = 'InnoDB'; + $table->bigIncrements('id')->unsigned(); + $table->bigInteger('member_id')->unsigned(); + $table + ->bigInteger('member_rank_id') + ->unsigned() + ->nullable(); + $table + ->foreign('member_rank_id') + ->references('id') + ->on('member_ranks'); + $table + ->bigInteger('typerating_id') + ->unsigned() + ->nullable(); + $table + ->foreign('typerating_id') + ->references('id') + ->on('typeratings'); + $table->datetime('start')->default(DB::raw('NOW()')); + $table->enum('status', ['pending', 'validated', 'closed', 'open']); + }); + } + + public function down() + { + Schema::connection('germanairlinesva_schooling')->dropIfExists('exams'); + } +} diff --git a/updates/version.yaml b/updates/version.yaml index cbac02d..ca30741 100644 --- a/updates/version.yaml +++ b/updates/version.yaml @@ -11,3 +11,5 @@ - builder_table_create_exam_questions.php - 'Created table exam_answers' - builder_table_create_exam_answers.php + - 'Created table exams' + - builder_table_create_exams.php