135 lines
2.9 KiB
HTML
135 lines
2.9 KiB
HTML
==
|
|
<?php
|
|
function resolveExamMemberRanks($root, $args) {
|
|
$exams = \GermanAirlinesVa\Schooling\Models\ExamMemberRank::where('member_id', $args['memberID'])->get();
|
|
foreach($exams as $exam) {
|
|
$exam->load([
|
|
'exam_questions' => function ($query) {
|
|
$query->groupBy('id');
|
|
}
|
|
]);
|
|
}
|
|
return $exams;
|
|
}
|
|
|
|
function resolveExamTyperatings($root, $args) {
|
|
$exams = \GermanAirlinesVa\Schooling\Models\ExamTyperating::where('member_id', $args['memberID'])->get();
|
|
foreach($exams as $exam) {
|
|
$exam->load([
|
|
'exam_questions' => function ($query) {
|
|
$query->groupBy('id');
|
|
}
|
|
]);
|
|
}
|
|
return $exams;
|
|
}
|
|
|
|
function resolveTyperatings() {
|
|
$typeratings = GermanAirlinesVa\Schooling\Models\Typerating::all();
|
|
foreach($typeratings as $typerating) {
|
|
$typerating->load([
|
|
'exam_questions' => function($query) {
|
|
$query->groupBy('id');
|
|
}
|
|
]);
|
|
}
|
|
return $typeratings;
|
|
}
|
|
|
|
function resolveMemberRanks() {
|
|
$ranks = GermanAirlinesVa\Schooling\Models\MemberRank::all();
|
|
foreach($ranks as $rank) {
|
|
$rank->load([
|
|
'exam_questions' => function($query) {
|
|
$query->groupBy('id');
|
|
}
|
|
]);
|
|
}
|
|
return $rank;
|
|
}
|
|
==
|
|
# Content
|
|
extend type Query {
|
|
memberRanks: [MemberRank]!
|
|
typeratings: [Typerating]!
|
|
examMemberRanks(memberID: ID!): [ExamMemberRank]!
|
|
examTyperatings(memberID: ID!): [ExamTyperating]!
|
|
}
|
|
|
|
type MemberRank {
|
|
id: ID!
|
|
name: String!
|
|
description: String!
|
|
points: Int!
|
|
price: Int!
|
|
badge: String!
|
|
region: String!
|
|
exam_questions: [ExamMemberRankQuestion]!
|
|
exams: [ExamMemberRank]!
|
|
}
|
|
type Typerating {
|
|
id: ID!
|
|
name: String!
|
|
price: Int!
|
|
exam_questions: [ExamTyperatingQuestion]!
|
|
exams: [ExamTyperating]!
|
|
}
|
|
type ExamMemberRank {
|
|
id: ID!
|
|
member_id: ID!
|
|
member_rank: MemberRank!
|
|
start: DateTime!
|
|
status: ExamStatus!
|
|
exam_questions: [ExamMemberRankQuestion]!
|
|
exam_answers: [ExamMemberRankAnswer]!
|
|
}
|
|
type ExamTyperating {
|
|
id: ID!
|
|
member_id: ID!
|
|
typerating: Typerating!
|
|
start: DateTime!
|
|
status: ExamStatus!
|
|
exam_questions: [ExamTyperatingQuestion]!
|
|
exam_answers: [ExamTyperatingAnswer]!
|
|
}
|
|
type ExamMemberRankQuestion {
|
|
id: ID!
|
|
member_rank: MemberRank!
|
|
in_use: Boolean!
|
|
mandatory: Boolean!
|
|
text: String!
|
|
picture: String!
|
|
exam_answers: [ExamMemberRankAnswer]!
|
|
}
|
|
type ExamTyperatingQuestion {
|
|
id: ID!
|
|
typerating: Typerating!
|
|
in_use: Boolean!
|
|
mandatory: Boolean!
|
|
text: String!
|
|
picture: String!
|
|
exam_answers: [ExamTyperatingAnswer]!
|
|
}
|
|
type ExamMemberRankAnswer {
|
|
id: ID!
|
|
exam_question: ExamMemberRankQuestion!
|
|
text: String!
|
|
is_correct: Boolean!
|
|
}
|
|
type ExamTyperatingAnswer {
|
|
id: ID!
|
|
exam_question: ExamTyperatingQuestion!
|
|
text: String!
|
|
is_correct: Boolean!
|
|
}
|
|
|
|
enum ExamStatus {
|
|
open
|
|
pending
|
|
closed
|
|
validated
|
|
}
|
|
|
|
scalar DateTime
|
|
@scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\DateTime")
|