From cb1f1f6739172ac893868d72a06972e16209ace1 Mon Sep 17 00:00:00 2001
From: Guilhem Roy <guilhem.roy@polytechnique.edu>
Date: Sat, 9 Mar 2019 12:51:42 +0100
Subject: [PATCH] =?UTF-8?q?requestModels.ts=20:=20mutations=20cr=C3=A9atio?=
 =?UTF-8?q?n=20requetes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/graphql/models/requestModel.ts | 8 ++++++--
 src/graphql/resolvers.ts           | 6 +++---
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/graphql/models/requestModel.ts b/src/graphql/models/requestModel.ts
index 0eeff5b..434677f 100644
--- a/src/graphql/models/requestModel.ts
+++ b/src/graphql/models/requestModel.ts
@@ -136,7 +136,8 @@ export class RequestModel {
      * @rights viewer du groupe
      */
     async userRequestJoinGroup(gid: string, comment: string): Promise<UserJoinGroup> {
-        throw "Not implemented";
+        let res = await knex("requests_user_join_group").insert({request_to : gid, request_from : this.contextUser, request_comment : comment}, ['rid']);
+        return this.getUserJoinGroupRequest(res[0]["rid"]);
     }
 
     /**
@@ -154,6 +155,8 @@ export class RequestModel {
     async groupRequestCoauthorEvent(from_gid: string, to_gid: string, event_mid: number, comment: string): Promise<GroupCoauthorEvent> {
         //TODO : Vérifier que l'évenement est bien organisé par le groupe destinataire (to_gid) !!! => sinon erreur
         throw "Not implemented";
+        let res = await knex("requests_group_coauthor_event").insert({request_to : to_gid, request_from : from_gid, request_comment : comment, for_event : event_mid}, ['rid']);
+        return this.getGroupCoauthorEventRequest(res[0]["rid"]);
     }
 
     /**
@@ -168,7 +171,8 @@ export class RequestModel {
      * @rights admin du groupe émetteur
      */
     async groupRequestJoinMetagroup(from_gid: string, to_gid: string, comment: string): Promise<GroupJoinMetagroup> {
-        throw "Not implemented";
+        let res = await knex("requests_group_join_metagroup").insert({request_to : to_gid, request_from : from_gid, request_comment : comment}, ['rid']);
+        return this.getGroupJoinMetagroupRequest(res[0]["rid"]);
     }
 
     /**
diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts
index 2322608..4d87f18 100644
--- a/src/graphql/resolvers.ts
+++ b/src/graphql/resolvers.ts
@@ -109,7 +109,7 @@ export const resolvers = {
         // @rights admin du groupe destinaire ou le user émetteur
         userJoinGroupRequest: async function (root, args, context: Context): Promise<UserJoinGroup> {
             let r = await context.models.request.getUserJoinGroupRequest(args.rid);
-            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.getUid() == (await r.from(args, context, "")).uid) {
+            if(!r || context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.getUid() == (await r.from(args, context, "")).uid) {
                 return r;
             }
             throw new AuthenticationError("Not an admin");
@@ -118,7 +118,7 @@ export const resolvers = {
         // @rights admin du groupe émetteur ou destinataire
         groupJoinMetagroupRequest: async function (root, args, context: Context): Promise<GroupJoinMetagroup> {
             let r = await context.models.request.getGroupJoinMetagroupRequest(args.rid);
-            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
+            if(!r || context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
                 return r;
             }
             throw new AuthenticationError("Not an admin");
@@ -127,7 +127,7 @@ export const resolvers = {
         // @rights admin du groupe émetteur ou destinataire
         groupCoauthorEventRequest: async function (root, args, context: Context): Promise<GroupCoauthorEvent> {
             let r = await context.models.request.getGroupCoauthorEventRequest(args.rid);
-            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
+            if(!r || context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
                 return r;
             }
             throw new AuthenticationError("Not an admin");
-- 
GitLab