From acd7e6f805a4d55d0351dfdea8d785e1a3a40f76 Mon Sep 17 00:00:00 2001
From: Elia Azar <elia.azar@polytechnique.edu>
Date: Sat, 16 Mar 2019 15:28:32 +0100
Subject: [PATCH] created and implemented simpleGroupsOfGroups in tool.ts to
 facilitate the implementation of other functions

---
 src/graphql/models/groupModel.ts |  5 ++++-
 src/graphql/models/tools.ts      | 15 +++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/graphql/models/groupModel.ts b/src/graphql/models/groupModel.ts
index 1a4e217..9785d3c 100644
--- a/src/graphql/models/groupModel.ts
+++ b/src/graphql/models/groupModel.ts
@@ -160,7 +160,10 @@ export class GroupModel {
      * @rights connectedOrOnplatal
      */
     getAllSimpleGroupsFromMeta(gid: string): Promise<GroupSet> {
-        throw "Not implemented";
+        let arg=new GroupSet();
+        arg.add(gid);
+        let res=Tools.simpleGroupsOfGroups(arg);
+        return res;
     }
 
     /**
diff --git a/src/graphql/models/tools.ts b/src/graphql/models/tools.ts
index 26d0f8b..7a1895a 100644
--- a/src/graphql/models/tools.ts
+++ b/src/graphql/models/tools.ts
@@ -119,6 +119,21 @@ export class Tools {
         }));
     }
 
+    /**
+     * @memberof GraphQL
+     * @summary Fonction qui renvoit tous les simple-groupes dont ces groupes sont membres.
+     * @arg {GroupSet} groups - Un ensemble de gid des groupes a considérer.
+     * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des simple-groupes.
+     * @static
+     * @async
+     */
+    static async simpleGroupsOfGroups(groups: GroupSet): Promise<GroupSet> {
+        let simples = await knex.select('simple_group_gid').from('metagroup_memberships').whereIn('meta_group_gid', [...groups]);
+        return new GroupSet(simples.map( elt => {
+            return elt.simple_group_gid;
+        }));
+    }
+
     /**
      * @memberof GraphQL
      * @summary Fonction qui renvoit tous les groupes (simples ou méta) dont le user est membre.
-- 
GitLab