From 11c3592164c6ca4cb126d1bf109478758fa1ad34 Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 29 Oct 2022 12:20:32 +0200 Subject: [PATCH] add notgroup function --- controllers/user.go | 26 ++++++++++++++++++++++++++ dao/group.go | 21 +++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/controllers/user.go b/controllers/user.go index 77862d1..93cf005 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -103,3 +103,29 @@ func GetGroupsUser(c *fiber.Ctx) error { } } } + +// @Summary Renvoie la liste des groupes où ne se trouve pas un utilisateur +// @Produce json +// @Success 200 {array} models.Group "Liste des ids des groupes" +// @Failure 403 +// @Failure 404 +// @Failure 500 +// @Router /users/{id}/not/groups [get] +func GetNotGroupsUser(c *fiber.Ctx) error { + token := checkCookie(c) + if token == "" { + return c.SendStatus(fiber.StatusForbidden) + } else { + id := c.Params("id") + groups, err := dao.GetGroupNotByMember(id) + if err == mongo.ErrNoDocuments { + return c.SendStatus(fiber.StatusNotFound) + } else if err != nil { + return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ + "error": fmt.Sprint(err), + }) + } else { + return c.Status(fiber.StatusOK).JSON(groups) + } + } +} diff --git a/dao/group.go b/dao/group.go index 477a96e..ccd3b96 100644 --- a/dao/group.go +++ b/dao/group.go @@ -45,6 +45,27 @@ func GetGroupByMember(id string) (group []models.Group, err error) { } } +func GetGroupNotByMember(id string) (group []models.Group, err error) { + db, _ := get() + objectId, err := primitive.ObjectIDFromHex(id) + defer disconnect(db.Client()) + coll := db.Collection("groups") + + cursor, err := coll.Find(context.TODO(), bson.D{{"members", bson.D{{"$ne", objectId}}}}) + defer cursor.Close(context.TODO()) + if err != nil { + return nil, err + } + + err = cursor.All(context.TODO(), &group) + + if err != nil { + return nil, err + } else { + return group, nil + } +} + func CheckMemberInGroup(idUser string, idGroup string) (ret bool, err error) { db, _ := get() userObject, err := primitive.ObjectIDFromHex(idUser)