Exemplo n.º 1
0
        internal ResultBase RenameBox(string userKey, string boxKey, string newName)
        {
            (UserGatewayController.CheckUserResult userResult, DBEntry.User user) = UserGatewayController.CheckUser(userKey);
            if (!userResult.success)
            {
                return(userResult);
            }
            IMongoCollection <DBEntry.User>      usersCollection       = Program.Database.GetCollection <DBEntry.User>("users");
            IMongoCollection <DBEntry.Community> communitiesCollection = Program.Database.GetCollection <DBEntry.Community>("communities");
            List <DBEntry.User>      boxesUser      = usersCollection.Find(x => x.Boxes.Any(y => y.Key == boxKey)).ToList();
            List <DBEntry.Community> boxesCommunity = communitiesCollection.Find(x => x.Boxes.Any(y => y.Key == boxKey)).ToList();

            if (boxesCommunity.Count + boxesUser.Count != 1)
            {
                return(new Result()
                {
                    authorized = true,
                    success = true,
                    type = "unsuccessful",
                    message = "nfc id does not exist"
                });
            }
            DBEntry.Box box = boxesCommunity.Select(x => x.Boxes.First(y => y.Key == boxKey)).Concat(boxesUser.Select(x => x.Boxes.First(y => y.Key == boxKey))).ElementAt(0);
            box.Name = newName;
            if (boxesUser.Select(x => x.Boxes.First(y => y.Key == box.Key)).Count() == 1)
            {
                DBEntry.User replaceUser = boxesUser.ElementAt(0);
                for (int i = 0; i < replaceUser.Boxes.Length; i++)
                {
                    if (replaceUser.Boxes[i].Key == box.Key)
                    {
                        replaceUser.Boxes[i] = box;
                    }
                }
                usersCollection.ReplaceOne(x => x.Username == replaceUser.Username, replaceUser);
            }
            else
            {
                DBEntry.Community replaceCommunity = boxesCommunity.ElementAt(0);
                for (int i = 0; i < replaceCommunity.Boxes.Length; i++)
                {
                    if (replaceCommunity.Boxes[i].Key == box.Key)
                    {
                        replaceCommunity.Boxes[i] = box;
                    }
                }
                communitiesCollection.ReplaceOne(x => x.UniqueName == replaceCommunity.UniqueName, replaceCommunity);
            }
            return(new Result()
            {
                authorized = true,
                message = "all good",
                success = true,
                type = "successful"
            });
        }
Exemplo n.º 2
0
        internal ResultBase MoveBox(string userKey, string boxKey, string to, string toType)
        {
            if (!(toType == "community" || toType == "user"))
            {
                return(new Result()
                {
                    authorized = false, success = false, type = "unsuccessful", message = "fromType or toType is not valid"
                });
            }
            (UserGatewayController.CheckUserResult userCheck, DBEntry.User dbUser) = UserGatewayController.CheckUser(userKey);
            if (!userCheck.authorized)
            {
                return(userCheck);
            }
            IMongoCollection <DBEntry.User>      usersCollection       = Program.Database.GetCollection <DBEntry.User>("users");
            IMongoCollection <DBEntry.Community> communitiesCollection = Program.Database.GetCollection <DBEntry.Community>("communities");
            List <DBEntry.User>      boxesUser      = usersCollection.Find(x => x.Boxes.Any(y => y.Key == boxKey)).ToList();
            List <DBEntry.Community> boxesCommunity = communitiesCollection.Find(x => x.Boxes.Any(y => y.Key == boxKey)).ToList();

            if (boxesCommunity.Count + boxesUser.Count != 1)
            {
                return(new Result()
                {
                    authorized = true,
                    success = true,
                    type = "unsuccessful",
                    message = "box does not exist"
                });
            }
            DBEntry.Box box = boxesCommunity.Select(x => x.Boxes.First(y => y.Key == boxKey)).Concat(boxesUser.Select(x => x.Boxes.First(y => y.Key == boxKey))).ElementAt(0);
            if (boxesCommunity.Count == 1)
            {
                DBEntry.Community  community = boxesCommunity[0];
                List <DBEntry.Box> boxes     = community.Boxes.ToList();
                boxes.Remove(box);
                community.Boxes = boxes.ToArray();
                communitiesCollection.ReplaceOne(x => x.UniqueName == community.UniqueName, community);
            }
            else
            {
                DBEntry.User       user  = boxesUser[0];
                List <DBEntry.Box> boxes = user.Boxes.ToList();
                boxes.Remove(box);
                user.Boxes = boxes.ToArray();
                usersCollection.ReplaceOne(x => x.Username == user.Username, user);
            }
            if (toType == "community")
            {
                List <DBEntry.Community> communities = communitiesCollection.Find(x => x.UniqueName == to).ToList();
                if (communities.Count != 1)
                {
                    return(new Result()
                    {
                        authorized = true,
                        success = false,
                        type = "unsuccessful",
                        message = "to does not exist"
                    });
                }
                DBEntry.Community  community = communities[0];
                List <DBEntry.Box> boxes     = community.Boxes.ToList();
                boxes.Add(box);
                community.Boxes = boxes.ToArray();
                communitiesCollection.ReplaceOne(x => x.UniqueName == community.UniqueName, community);
            }
            else
            {
                List <DBEntry.User> users = usersCollection.Find(x => x.Username == to).ToList();
                if (users.Count != 1)
                {
                    return(new Result()
                    {
                        authorized = true,
                        success = false,
                        type = "unsuccessful",
                        message = "to does not exist"
                    });
                }
                DBEntry.User       user  = users[0];
                List <DBEntry.Box> boxes = user.Boxes.ToList();
                boxes.Add(box);
                user.Boxes = boxes.ToArray();
                usersCollection.ReplaceOne(x => x.Username == user.Username, user);
            }
            return(new Result()
            {
                authorized = true,
                success = true,
                type = "successful",
                message = "all good",
            });
        }