Example #1
0
        public int AddFriend(string userA, string userB)
        {
            int userAId = 0;
            int userBId = 0;
            int status  = 0;

            using (var factory = new FriendSuggestorContextFactory())
            {
                // Get a context
                using (var context = factory.CreateContext())
                {
                    userAId = context.Users.Where(a => a.UserName == userA).Select(a => a.UserId).FirstOrDefault();
                    userBId = context.Users.Where(a => a.UserName == userB).Select(a => a.UserId).FirstOrDefault();
                    if (userAId != 0 && userBId != 0)
                    {
                        FriendRequest fr1 = context.FriendRequests.Where(a => a.UserId == userAId).FirstOrDefault();
                        FriendRequest fr2 = context.FriendRequests.Where(a => a.UserId == userBId).FirstOrDefault();
                        FriendsList   fl1 = context.FriendsLists.Where(a => a.UserF == userAId && a.UserSF == userBId).FirstOrDefault();
                        FriendsList   fl2 = context.FriendsLists.Where(a => a.UserF == userBId && a.UserSF == userAId).FirstOrDefault();
                        if (fl1 == null)
                        {
                            if (fl2 != null)
                            {
                                fl2.IsFriend        = true;
                                fr2.PendingRequests = fr2.PendingRequests - 1;
                                fr2.TotalFriends    = fr2.TotalFriends + 1;
                                fr1.TotalFriends    = fr1.TotalFriends + 1;
                            }
                            else
                            {
                                fl2          = new FriendsList();
                                fl2.UserF    = userAId;
                                fl2.UserSF   = userBId;
                                fl2.IsFriend = false;
                                context.FriendsLists.Add(fl2);
                                fr2.PendingRequests = fr2.PendingRequests;
                            }
                            context.SaveChanges();
                            status = 1;
                        }
                        else
                        {
                            status = 2;
                        }
                    }
                }
            }
            return(status);
        }