diff --git a/controllers/ExamMemberRankAnswer.php b/controllers/ExamMemberRankAnswer.php
new file mode 100644
index 0000000..50ac91b
--- /dev/null
+++ b/controllers/ExamMemberRankAnswer.php
@@ -0,0 +1,23 @@
+leftJoin('exam_questions', 'exam_questions.id', 'exam_answers.exam_question_id');
+ $query->where('exam_questions.member_rank_id', '<>', null);
+ }
+}
diff --git a/controllers/ExamTyperatingAnswer.php b/controllers/ExamTyperatingAnswer.php
new file mode 100644
index 0000000..7ea9341
--- /dev/null
+++ b/controllers/ExamTyperatingAnswer.php
@@ -0,0 +1,23 @@
+leftJoin('exam_questions', 'exam_questions.id', 'exam_answers.exam_question_id');
+ $query->where('exam_questions.typerating_id', '<>', null);
+ }
+}
diff --git a/controllers/exammemberrankanswer/_list_toolbar.htm b/controllers/exammemberrankanswer/_list_toolbar.htm
new file mode 100644
index 0000000..80f8872
--- /dev/null
+++ b/controllers/exammemberrankanswer/_list_toolbar.htm
@@ -0,0 +1,23 @@
+
diff --git a/controllers/exammemberrankanswer/config_form.yaml b/controllers/exammemberrankanswer/config_form.yaml
new file mode 100644
index 0000000..79640e6
--- /dev/null
+++ b/controllers/exammemberrankanswer/config_form.yaml
@@ -0,0 +1,10 @@
+name: Exam Member Rank Answers
+form: $/germanairlinesva/schooling/models/exammemberrankanswer/fields.yaml
+modelClass: GermanAirlinesVa\Schooling\Models\ExamMemberRankAnswer
+defaultRedirect: germanairlinesva/schooling/exammemberrankanswer
+create:
+ redirect: 'germanairlinesva/schooling/exammemberrankanswer/update/:id'
+ redirectClose: germanairlinesva/schooling/exammemberrankanswer
+update:
+ redirect: germanairlinesva/schooling/exammemberrankanswer
+ redirectClose: germanairlinesva/schooling/exammemberrankanswer
diff --git a/controllers/exammemberrankanswer/config_list.yaml b/controllers/exammemberrankanswer/config_list.yaml
new file mode 100644
index 0000000..dc989e1
--- /dev/null
+++ b/controllers/exammemberrankanswer/config_list.yaml
@@ -0,0 +1,12 @@
+list: $/germanairlinesva/schooling/models/exammemberrankanswer/columns.yaml
+modelClass: GermanAirlinesVa\Schooling\Models\ExamMemberRankAnswer
+title: Exam Member Rank Answers
+noRecordsMessage: 'backend::lang.list.no_records'
+showSetup: true
+showCheckboxes: true
+recordsPerPage: 20
+toolbar:
+ buttons: list_toolbar
+ search:
+ prompt: 'backend::lang.list.search_prompt'
+recordUrl: 'germanairlinesva/schooling/exammemberrankanswer/update/:id'
diff --git a/controllers/exammemberrankanswer/create.htm b/controllers/exammemberrankanswer/create.htm
new file mode 100644
index 0000000..34fe5e7
--- /dev/null
+++ b/controllers/exammemberrankanswer/create.htm
@@ -0,0 +1,54 @@
+
+
+
+
+fatalError): ?>
+
+= Form::open(['class' =>
+'layout']) ?>
+
+= $this->formRender() ?>
+
+
+
+= Form::close() ?>
+
+
+= e(trans($this->fatalError)) ?>
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/controllers/exammemberrankanswer/index.htm b/controllers/exammemberrankanswer/index.htm
new file mode 100644
index 0000000..ea43a36
--- /dev/null
+++ b/controllers/exammemberrankanswer/index.htm
@@ -0,0 +1 @@
+= $this->listRender() ?>
diff --git a/controllers/exammemberrankanswer/preview.htm b/controllers/exammemberrankanswer/preview.htm
new file mode 100644
index 0000000..504add5
--- /dev/null
+++ b/controllers/exammemberrankanswer/preview.htm
@@ -0,0 +1,23 @@
+
+
+
+
+fatalError): ?>
+
+= $this->formRenderPreview() ?>
+
+
+= e($this->fatalError) ?>
+
+
+
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/controllers/exammemberrankanswer/update.htm b/controllers/exammemberrankanswer/update.htm
new file mode 100644
index 0000000..46a7721
--- /dev/null
+++ b/controllers/exammemberrankanswer/update.htm
@@ -0,0 +1,62 @@
+
+
+
+
+fatalError): ?>
+
+= Form::open(['class' =>
+'layout']) ?>
+
+= $this->formRender() ?>
+
+
+= Form::close() ?>
+
+
+= e(trans($this->fatalError)) ?>
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/controllers/examtyperatinganswer/_list_toolbar.htm b/controllers/examtyperatinganswer/_list_toolbar.htm
new file mode 100644
index 0000000..5fa657c
--- /dev/null
+++ b/controllers/examtyperatinganswer/_list_toolbar.htm
@@ -0,0 +1,23 @@
+
diff --git a/controllers/examtyperatinganswer/config_form.yaml b/controllers/examtyperatinganswer/config_form.yaml
new file mode 100644
index 0000000..393b372
--- /dev/null
+++ b/controllers/examtyperatinganswer/config_form.yaml
@@ -0,0 +1,10 @@
+name: Exam Typerating Answer
+form: $/germanairlinesva/schooling/models/examtyperatinganswer/fields.yaml
+modelClass: GermanAirlinesVa\Schooling\Models\ExamMemberRankAnswer
+defaultRedirect: germanairlinesva/schooling/examtyperatinganswer
+create:
+ redirect: 'germanairlinesva/schooling/examtyperatinganswer/update/:id'
+ redirectClose: germanairlinesva/schooling/examtyperatinganswer
+update:
+ redirect: germanairlinesva/schooling/examtyperatinganswer
+ redirectClose: germanairlinesva/schooling/examtyperatinganswer
diff --git a/controllers/examtyperatinganswer/config_list.yaml b/controllers/examtyperatinganswer/config_list.yaml
new file mode 100644
index 0000000..a853a76
--- /dev/null
+++ b/controllers/examtyperatinganswer/config_list.yaml
@@ -0,0 +1,12 @@
+list: $/germanairlinesva/schooling/models/examtyperatinganswer/columns.yaml
+modelClass: GermanAirlinesVa\Schooling\Models\ExamMemberRankAnswer
+title: Exam Typerating Answers
+noRecordsMessage: 'backend::lang.list.no_records'
+showSetup: true
+showCheckboxes: true
+recordsPerPage: 20
+toolbar:
+ buttons: list_toolbar
+ search:
+ prompt: 'backend::lang.list.search_prompt'
+recordUrl: 'germanairlinesva/schooling/examtyperatinganswer/update/:id'
diff --git a/controllers/examtyperatinganswer/create.htm b/controllers/examtyperatinganswer/create.htm
new file mode 100644
index 0000000..5769c35
--- /dev/null
+++ b/controllers/examtyperatinganswer/create.htm
@@ -0,0 +1,54 @@
+
+
+
+
+fatalError): ?>
+
+= Form::open(['class' =>
+'layout']) ?>
+
+= $this->formRender() ?>
+
+
+
+= Form::close() ?>
+
+
+= e(trans($this->fatalError)) ?>
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/controllers/examtyperatinganswer/index.htm b/controllers/examtyperatinganswer/index.htm
new file mode 100644
index 0000000..ea43a36
--- /dev/null
+++ b/controllers/examtyperatinganswer/index.htm
@@ -0,0 +1 @@
+= $this->listRender() ?>
diff --git a/controllers/examtyperatinganswer/preview.htm b/controllers/examtyperatinganswer/preview.htm
new file mode 100644
index 0000000..3371f16
--- /dev/null
+++ b/controllers/examtyperatinganswer/preview.htm
@@ -0,0 +1,23 @@
+
+
+
+
+fatalError): ?>
+
+= $this->formRenderPreview() ?>
+
+
+= e($this->fatalError) ?>
+
+
+
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/controllers/examtyperatinganswer/update.htm b/controllers/examtyperatinganswer/update.htm
new file mode 100644
index 0000000..ea8ae8b
--- /dev/null
+++ b/controllers/examtyperatinganswer/update.htm
@@ -0,0 +1,62 @@
+
+
+
+
+fatalError): ?>
+
+= Form::open(['class' =>
+'layout']) ?>
+
+= $this->formRender() ?>
+
+
+= Form::close() ?>
+
+
+= e(trans($this->fatalError)) ?>
+
+ = e(trans('backend::lang.form.return_to_list')) ?>
+
+
diff --git a/lang/en/lang.php b/lang/en/lang.php
index 4c9de24..4943086 100644
--- a/lang/en/lang.php
+++ b/lang/en/lang.php
@@ -13,6 +13,8 @@
'rank' => 'Member Ranks',
'exam_question_rank' => 'Exam Member Rank Questions',
'exam_question_typerating' => 'Exam Typerating Questions',
+ 'exam_answer_rank' => 'Exam Member Rank Answers',
+ 'exam_answer_typerating' => 'Exam Typerating Answers',
],
'permissions' => [
'tab' => 'German Airlines VA - Schooling',
@@ -34,4 +36,9 @@
'text' => 'Question text',
'picture' => 'Question Picture',
],
+ 'exam_answer' => [
+ 'question' => 'Exam Question',
+ 'text' => 'Answer Text',
+ 'is_correct' => 'True if Answer is Correct',
+ ],
];
diff --git a/models/ExamMemberRankAnswer.php b/models/ExamMemberRankAnswer.php
new file mode 100644
index 0000000..e95d698
--- /dev/null
+++ b/models/ExamMemberRankAnswer.php
@@ -0,0 +1,36 @@
+ 'required',
+ 'text' => 'required',
+ 'is_correct' => 'required',
+ ];
+
+ public $belongsTo = [
+ 'exam_question' => ['GermanAirlinesVa\Schooling\Models\ExamMemberRankQuestion', 'key' => 'exam_question_id'],
+ ];
+}
diff --git a/models/ExamMemberRankQuestion.php b/models/ExamMemberRankQuestion.php
index 2ec2cd1..53afb5a 100644
--- a/models/ExamMemberRankQuestion.php
+++ b/models/ExamMemberRankQuestion.php
@@ -31,6 +31,10 @@ class ExamMemberRankQuestion extends Model
'text' => 'required',
];
+ public $hasMany = [
+ 'exam_answers' => 'GermanAirlinesVa\Schooling\Models\ExamMemberRankAnswer',
+ ];
+
public $belongsTo = [
'member_rank' => 'GermanAirlinesVa\Schooling\Models\MemberRank',
];
diff --git a/models/ExamTyperatingAnswer.php b/models/ExamTyperatingAnswer.php
new file mode 100644
index 0000000..b08874e
--- /dev/null
+++ b/models/ExamTyperatingAnswer.php
@@ -0,0 +1,36 @@
+ 'required',
+ 'text' => 'required',
+ 'is_correct' => 'required',
+ ];
+
+ public $belongsTo = [
+ 'exam_question' => ['GermanAirlinesVa\Schooling\Models\ExamTyperatingQuestion', 'key' => 'exam_question_id'],
+ ];
+}
diff --git a/models/MemberRank.php b/models/MemberRank.php
index 8ef6241..61bfaa1 100644
--- a/models/MemberRank.php
+++ b/models/MemberRank.php
@@ -32,4 +32,8 @@ class MemberRank extends Model
'badge' => 'required',
'region' => 'required',
];
+
+ public $hasMany = [
+ 'exam_questions' => 'GermanAirlinesVa\Schooling\Models\ExamMemberRankQuestion',
+ ];
}
diff --git a/models/Typerating.php b/models/Typerating.php
index bbd716f..7a3e3dc 100644
--- a/models/Typerating.php
+++ b/models/Typerating.php
@@ -28,5 +28,6 @@ class Typerating extends Model
public $hasMany = [
'aircraft_types' => 'GermanAirlinesVa\Fleet\Models\AircraftType',
+ 'exam_questions' => 'GermanAirlinesVa\Schooling\Models\ExamTyperatingQuestion',
];
}
diff --git a/models/examMemberRankAnswer/columns.yaml b/models/examMemberRankAnswer/columns.yaml
new file mode 100644
index 0000000..910bfa7
--- /dev/null
+++ b/models/examMemberRankAnswer/columns.yaml
@@ -0,0 +1,17 @@
+columns:
+ id:
+ label: id
+ type: text
+ exam_question_id:
+ label: exam_question_id
+ type: text
+ searchable: true
+ relation: exam_question
+ valueFrom: text
+ text:
+ label: text
+ type: text
+ searchable: true
+ is_correct:
+ label: is_correct
+ type: switch
diff --git a/models/examMemberRankAnswer/fields.yaml b/models/examMemberRankAnswer/fields.yaml
new file mode 100644
index 0000000..a059752
--- /dev/null
+++ b/models/examMemberRankAnswer/fields.yaml
@@ -0,0 +1,19 @@
+fields:
+ exam_question:
+ label: 'germanairlinesva.schooling::lang.exam_answer.question'
+ nameFrom: text
+ descriptionFrom: description
+ span: auto
+ required: 1
+ type: relation
+ text:
+ label: 'germanairlinesva.schooling::lang.exam_answer.text'
+ size: small
+ span: auto
+ required: 1
+ type: richeditor
+ is_correct:
+ label: 'germanairlinesva.schooling::lang.exam_answer.is_correct'
+ span: auto
+ required: 1
+ type: switch
diff --git a/models/examTyperatingAnswer/columns.yaml b/models/examTyperatingAnswer/columns.yaml
new file mode 100644
index 0000000..910bfa7
--- /dev/null
+++ b/models/examTyperatingAnswer/columns.yaml
@@ -0,0 +1,17 @@
+columns:
+ id:
+ label: id
+ type: text
+ exam_question_id:
+ label: exam_question_id
+ type: text
+ searchable: true
+ relation: exam_question
+ valueFrom: text
+ text:
+ label: text
+ type: text
+ searchable: true
+ is_correct:
+ label: is_correct
+ type: switch
diff --git a/models/examTyperatingAnswer/fields.yaml b/models/examTyperatingAnswer/fields.yaml
new file mode 100644
index 0000000..a059752
--- /dev/null
+++ b/models/examTyperatingAnswer/fields.yaml
@@ -0,0 +1,19 @@
+fields:
+ exam_question:
+ label: 'germanairlinesva.schooling::lang.exam_answer.question'
+ nameFrom: text
+ descriptionFrom: description
+ span: auto
+ required: 1
+ type: relation
+ text:
+ label: 'germanairlinesva.schooling::lang.exam_answer.text'
+ size: small
+ span: auto
+ required: 1
+ type: richeditor
+ is_correct:
+ label: 'germanairlinesva.schooling::lang.exam_answer.is_correct'
+ span: auto
+ required: 1
+ type: switch
diff --git a/models/exammemberrankquestion/columns.yaml b/models/exammemberrankquestion/columns.yaml
index 9b40a58..fc2a2e9 100644
--- a/models/exammemberrankquestion/columns.yaml
+++ b/models/exammemberrankquestion/columns.yaml
@@ -4,8 +4,9 @@ columns:
type: text
member_rank:
label: member_rank
- relation: member_rank
type: text
+ searchable: true
+ relation: member_rank
valueFrom: name
in_use:
label: in_use
@@ -13,9 +14,11 @@ columns:
mandatory:
label: mandatory
type: text
+ searchable: false
text:
label: text
type: text
+ searchable: true
picture:
label: picture
type: text
diff --git a/models/exammemberrankquestion/fields.yaml b/models/exammemberrankquestion/fields.yaml
index be00f61..d3e1cd8 100644
--- a/models/exammemberrankquestion/fields.yaml
+++ b/models/exammemberrankquestion/fields.yaml
@@ -19,7 +19,7 @@ fields:
type: switch
text:
label: 'germanairlinesva.schooling::lang.exam_question.text'
- size: large
+ size: small
span: auto
required: 1
type: richeditor
diff --git a/models/examtyperatingquestion/columns.yaml b/models/examtyperatingquestion/columns.yaml
index 5dc4c44..8418a34 100644
--- a/models/examtyperatingquestion/columns.yaml
+++ b/models/examtyperatingquestion/columns.yaml
@@ -5,17 +5,20 @@ columns:
typerating:
label: typerating
type: text
+ searchable: true
relation: typerating
valueFrom: name
in_use:
label: in_use
type: text
+ searchable: false
mandatory:
label: mandatory
type: text
text:
label: text
type: text
+ searchable: true
picture:
label: picture
type: text
diff --git a/models/examtyperatingquestion/fields.yaml b/models/examtyperatingquestion/fields.yaml
index d520143..fd66f7f 100644
--- a/models/examtyperatingquestion/fields.yaml
+++ b/models/examtyperatingquestion/fields.yaml
@@ -20,7 +20,7 @@ fields:
type: switch
text:
label: 'germanairlinesva.schooling::lang.exam_question.text'
- size: large
+ size: small
span: auto
required: 1
type: richeditor
diff --git a/plugin.yaml b/plugin.yaml
index 6b4b3e6..7b273f4 100644
--- a/plugin.yaml
+++ b/plugin.yaml
@@ -28,6 +28,14 @@ navigation:
label: 'germanairlinesva.schooling::lang.menu.exam_question_typerating'
url: germanairlinesva/schooling/examtyperatingquestion
icon: icon-question
+ side-menu-item5:
+ label: 'germanairlinesva.schooling::lang.menu.exam_answer_rank'
+ url: germanairlinesva/schooling/exammemberrankanswer
+ icon: icon-check
+ side-menu-item6:
+ label: 'germanairlinesva.schooling::lang.menu.exam_answer_typerating'
+ url: germanairlinesva/schooling/examtyperatinganswer
+ icon: icon-check
permissions:
schooling:
tab: 'germanairlinesva.schooling::lang.permissions.tab'
diff --git a/updates/builder_table_create_exam_answers.php b/updates/builder_table_create_exam_answers.php
new file mode 100644
index 0000000..bb0fd9a
--- /dev/null
+++ b/updates/builder_table_create_exam_answers.php
@@ -0,0 +1,27 @@
+create('exam_answers', function ($table) {
+ $table->engine = 'InnoDB';
+ $table->bigIncrements('id')->unsigned();
+ $table->bigInteger('exam_question_id')->unsigned();
+ $table
+ ->foreign('exam_question_id')
+ ->references('id')
+ ->on('exam_questions');
+ $table->text('text');
+ $table->boolean('is_correct');
+ });
+ }
+
+ public function down()
+ {
+ Schema::connection('germanairlinesva_schooling')->dropIfExists('exam_answers');
+ }
+}
diff --git a/updates/version.yaml b/updates/version.yaml
index 410798f..cbac02d 100644
--- a/updates/version.yaml
+++ b/updates/version.yaml
@@ -9,3 +9,5 @@
- builder_table_create_member_ranks.php
- 'Created table exam_questions'
- builder_table_create_exam_questions.php
+ - 'Created table exam_answers'
+ - builder_table_create_exam_answers.php