public AddFriendRequest[] GetAddFriendRequests(string ownerUsername)
        {
            List <AddFriendRequest> requests = new List <AddFriendRequest>();
            var db         = GetDatabase();
            var collection = db.GetCollection("friend_request");

            var queryDoc = new QueryDocument();

            queryDoc.Add("OwnerUsername", ownerUsername.ToLower());

            foreach (var req in collection.Find(queryDoc))
            {
                AddFriendRequest request = new AddFriendRequest()
                {
                    Time           = req.GetValue("Time").AsDateTime,
                    OwnerUsername  = req.GetValue("OwnerUsername").AsString,
                    FriendUsername = req.GetValue("FriendUsername").AsString,
                    GroupName      = req.GetValue("GroupName").AsString,
                    Remark         = req.GetValue("Remark").AsString,
                    Message        = req.GetValue("Message").AsString
                };
                requests.Add(request);
            }
            return(requests.ToArray());
        }
        public AddFriendRequest GetAddFriendRequest(string ownerUsername, string friendUsername, bool remove)
        {
            AddFriendRequest req = null;
            var db         = GetDatabase();
            var collection = db.GetCollection("friend_request");
            var query      = new QueryDocument(
                new BsonElement("OwnerUsername", ownerUsername.ToLower()),
                new BsonElement("FriendUsername", friendUsername.ToLower()));

            var resp = collection.Find(query);

            resp.Limit = 1;
            if (resp.Size() == 0)
            {
                return(null);
            }
            foreach (var item in resp)
            {
                req = new AddFriendRequest()
                {
                    Time           = item.GetValue("Time").AsDateTime,
                    OwnerUsername  = item.GetValue("OwnerUsername").AsString,
                    FriendUsername = item.GetValue("FriendUsername").AsString,
                    GroupName      = item.Contains("GroupName") ? item.GetValue("GroupName").AsString : null,
                    Remark         = item.Contains("Remark") ? item.GetValue("Remark").AsString : null,
                    Message        = item.Contains("Message") ? item.GetValue("Message").AsString : null
                };
            }
            if (remove)
            {
                collection.Remove(query);
            }

            return(req);
        }
        public AddFriendRequest GetAddFriendRequest(string ownerUsername, string friendUsername, bool remove)
        {
            AddFriendRequest req = null;
            var db = GetDatabase();
            var collection = db.GetCollection("friend_request");
            var query = new QueryDocument(
                  new BsonElement("OwnerUsername", ownerUsername.ToLower()),
                  new BsonElement("FriendUsername", friendUsername.ToLower()));

            var resp = collection.Find(query);
            resp.Limit = 1;
            if (resp.Size() == 0)
                return null;
            foreach (var item in resp)
            {
                req = new AddFriendRequest()
                {
                    Time = item.GetValue("Time").AsDateTime,
                    OwnerUsername = item.GetValue("OwnerUsername").AsString,
                    FriendUsername = item.GetValue("FriendUsername").AsString,
                    GroupName = item.Contains("GroupName") ? item.GetValue("GroupName").AsString : null,
                    Remark = item.Contains("Remark") ? item.GetValue("Remark").AsString : null,
                    Message = item.Contains("Message") ? item.GetValue("Message").AsString : null
                };
            }
            if (remove)
                collection.Remove(query);

            return req;
        }
        public AddFriendRequest[] GetAddFriendRequests(string ownerUsername)
        {
            List<AddFriendRequest> requests = new List<AddFriendRequest>();
            var db = GetDatabase();
            var collection = db.GetCollection("friend_request");

            var queryDoc = new QueryDocument();
            queryDoc.Add("OwnerUsername", ownerUsername.ToLower());

            foreach (var req in collection.Find(queryDoc))
            {
                AddFriendRequest request = new AddFriendRequest()
                {
                    Time = req.GetValue("Time").AsDateTime,
                    OwnerUsername = req.GetValue("OwnerUsername").AsString,
                    FriendUsername = req.GetValue("FriendUsername").AsString,
                    GroupName = req.GetValue("GroupName").AsString,
                    Remark = req.GetValue("Remark").AsString,
                    Message = req.GetValue("Message").AsString

                };
                requests.Add(request);
            }
            return requests.ToArray();
        }