Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
172128b37b | ||
|
|
8bb522ec33 | ||
|
|
f32d3a4877 | ||
|
|
0fe449538e | ||
|
|
c797cb9f24 | ||
|
|
e884b0e97d |
@@ -50,6 +50,7 @@ class Plugin extends PluginBase
|
||||
]);
|
||||
|
||||
Config::set('database.connections.germanairlinesva_graphql', Config::get('germanairlinesva.graphql::connection'));
|
||||
Config::push('system.unencrypt_cookies', 'graphql-session-id');
|
||||
}
|
||||
|
||||
public function bootPackages()
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
==
|
||||
<?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")
|
||||
Reference in New Issue
Block a user