2021-08-16 11:34:24 +02:00

151 lines
3.8 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;
}
function createExamMemberRank($root, $args) {
return GermanAirlinesVa\Schooling\Models\ExamMemberRank::createNew($args['memberID'], $args['memberRankID']);
}
function resolveCreateExamTyperating($root, $args) {
return GermanAirlinesVa\Schooling\Models\ExamTyperating::createNew($args['memberID'], $args['typeratingID']);
}
==
# Content
extend type Query {
memberRanks: [MemberRank]!
typeratings: [Typerating]!
examMemberRanks(memberID: ID!): [ExamMemberRank]!
examTyperatings(memberID: ID!): [ExamTyperating]!
}
extend type Mutation {
createExamMemberRank(memberID: ID!, memberRankID: ID!): ExamMemberRank!
createExamTyperating(memberID: ID!, typeratingID: ID!): ExamTyperating!
}
type MemberRank {
id: ID!
name: String!
description: String!
points: Int!
price: Int!
badge: String!
region: String!
exam_questions: [ExamMemberRankQuestion]! @hasMany
exams: [ExamMemberRank]! @hasMany
}
type Typerating {
id: ID!
name: String!
price: Int!
exam_questions: [ExamTyperatingQuestion]! @hasMany
exams: [ExamTyperating]! @hasMany
}
type ExamMemberRank {
id: ID!
member_id: ID!
member_rank: MemberRank! @belongsTo
start: DateTime!
status: ExamStatus!
exam_questions: [ExamMemberRankQuestion]! @belongsToMany
exam_answers: [ExamMemberRankAnswer]! @belongsToMany
}
type ExamTyperating {
id: ID!
member_id: ID!
typerating: Typerating! @belongsTo
start: DateTime!
status: ExamStatus!
exam_questions: [ExamTyperatingQuestion]! @belongsToMany
exam_answers: [ExamTyperatingAnswer]! @belongsToMany
}
type ExamMemberRankQuestion {
id: ID!
member_rank: MemberRank! @belongsTo
in_use: Boolean!
mandatory: Boolean!
text: String!
picture: String!
exam_answers: [ExamMemberRankAnswer]! @hasMany
exam_member_ranks: [ExamMemberRank]! @belongsToMany
}
type ExamTyperatingQuestion {
id: ID!
typerating: Typerating! @belongsTo
in_use: Boolean!
mandatory: Boolean!
text: String!
picture: String!
exam_answers: [ExamTyperatingAnswer]! @hasMany
exma_typeratings: [ExamTyperating]! @belongsToMany
}
type ExamMemberRankAnswer {
id: ID!
exam_question: ExamMemberRankQuestion! @belongsTo
text: String!
is_correct: Boolean!
exam_member_ranks: [ExamMemberRank]! @belongsToMany
}
type ExamTyperatingAnswer {
id: ID!
exam_question: ExamTyperatingQuestion! @belongsTo
text: String!
is_correct: Boolean!
exam_typeratings: [ExamTyperating]! @belongsToMany
}
enum ExamStatus {
open
pending
closed
validated
}
scalar DateTime
@scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\DateTime")