From 01a8b2d1c9403286473bd98d4b9a0ce696a53573 Mon Sep 17 00:00:00 2001
From: anatole <anatole.romon@polytechnique.edu>
Date: Fri, 2 Mar 2018 21:32:08 +0100
Subject: [PATCH] modifications de typeDefs

---
 src/graphql/schema.js   | 14 +-----------
 src/graphql/typeDefs.js | 47 +++++++++++++++++++++++++++++------------
 2 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index 5a20fd7..850c7ca 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -88,17 +88,13 @@ const resolvers = {
         }
     },
 
-    Requests: {
+    AllRequests: {
         userJoinGroup : (obj, args, context) => {
             return db_utils.getUserJoinGroupRequests(context.user, args.groupUID);
         },
     },
 
     UserJoinGroup: {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         user : (obj, args, context) => {
             return db_utils.getUser(context.user, obj.useruid);
             /*return db_utils.getUser(context.user, "quentin.gendre");
@@ -115,10 +111,6 @@ const resolvers = {
     },
 
     GroupJoinEvent : {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         event: (obj, args, context) => {
             return db_utils.getEvent(context.user, obj.eventuid);
         },
@@ -128,10 +120,6 @@ const resolvers = {
     },
 
     YourGroupHostEvent : {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         event: (obj, args, context) => {
             return db_utils.getEvent(context.user, obj.eventuid);
         },
diff --git a/src/graphql/typeDefs.js b/src/graphql/typeDefs.js
index 8ed83f0..9842a88 100644
--- a/src/graphql/typeDefs.js
+++ b/src/graphql/typeDefs.js
@@ -10,7 +10,9 @@ const RootTypes = `
         allAnnouncements: [Announcement]
 
         asAdmin(groupUID: ID): AdminQuery
-
+        asSpeaker(groupUID: ID): AdminQuery
+        asMember(groupUID: ID): AdminQuery
+        asViewer(groupUID: ID): AdminQuery
         
         searchTOL(
             givenName: String,
@@ -68,6 +70,7 @@ const subMutations = `
 
     type SpeakerMutation{
         postEvent(name: String, date: String): Event
+        answerRequest(request: ID, accept : Boolean): Request
     }
 
     type MemberMutation {
@@ -78,13 +81,26 @@ const subMutations = `
         requestJoin: Group
     }
 
+
 `;
 
 const subQueries = `
     # Requête à la base de donnée nécessitant d'être administrateur.
     type AdminQuery{
         isAdmin: Boolean
-        allRequests : Requests
+        allRequests : AllRequests
+    }
+
+    type SpeakerQuery{
+        isSpeaker: Boolean
+    }
+
+    type MemberQuery{
+        isMember: Boolean
+    }
+
+    type ViewerQuery{
+        isViewer: Boolean
     }
 `;
 
@@ -187,27 +203,32 @@ const Event = `
 
 const Requests = `
     # Demandes effectuées au groupe.
-    type Requests {
+    type AllRequests {
         userJoinGroup: [UserJoinGroup]
         groupJoinEvent: [GroupJoinEvent]
         yourGroupHostEvent: [YourGroupHostEvent]
     }
 
-    # Demande d'un utilisateur désirant rejoindre le groupe.
-    type UserJoinGroup {
+    interface Request {
         # ID de la demande
-        requestID: ID
-        # Émetteur de la demande
-        user: User
+        id: ID!
         # message accompagnant la demande
         message: String
     }
 
+    # Demande d'un utilisateur désirant rejoindre le groupe.
+    type UserJoinGroup implements Request{
+        id: ID!
+        message: String
+        # Émetteur de la demande
+        user: User
+    }
+
 
     # Demande d'un groupe voulant rejoindre un événement
-    type GroupJoinEvent {
-        # ID de la demande
-        requestID: ID
+    type GroupJoinEvent implements Request{
+        id: ID!
+        message: String
         # Événement concerné
         event: Event
         # Groupe voulant rejoindre l'événement
@@ -215,9 +236,9 @@ const Requests = `
     }
 
     # Demande au récipiendaire de rejoindre l'organisation d'un événement.
-    type YourGroupHostEvent {
-        # ID de la demande
+    type YourGroupHostEvent implements Request{
         requestID: ID
+        message: String
         # Événement concerné
         event: Event
         # Groupe ayant publié l'évènement et lancé l'invitation
-- 
GitLab