public ActionResult Accept(string id)
        {
            var friendsContext  = new FriendsDbContext();
            var requestsContext = new FriendRequestDbContext();
            var userId          = User.Identity.GetUserId();
            var requestToRemove = requestsContext.FriendRequests.FirstOrDefault(u => u.FriendId == userId && u.UserId == id);

            // Check that the users aren't already friends
            var friends = friendsContext.Friends.Where(u => u.User.UserId == userId && u.Friend.UserId == id);

            if (friends.Count() == 0)
            {
                friendsContext.Friends.Add(new FriendsModel {
                    UserId   = userId,
                    FriendId = id,
                    Category = "Friend"
                });
                // You're my friend == I'm your friend (allows users to pick different categories for each other)
                friendsContext.Friends.Add(new FriendsModel {
                    UserId   = id,
                    FriendId = userId,
                    Category = "Friend"
                });

                friendsContext.SaveChanges();
            }
            requestsContext.FriendRequests.Remove(requestToRemove);
            requestsContext.SaveChanges();

            return(RedirectToAction("Index"));
        }
        //Ta vort från vänförfrågning
        private void RemoveFromRequests(string userId, string friendUserId)
        {
            var ctx         = new FriendRequestDbContext();
            var reqToRemove = ctx.Requests.
                              SingleOrDefault(r => r.RecieverId == userId && r.SenderId == friendUserId);

            if (reqToRemove != null)
            {
                ctx.Requests.Remove(reqToRemove);
            }
            ctx.SaveChanges();
        }
        //Avböj vänförfrågan
        public ActionResult DenyFriendRequest(string userId)
        {
            var currentUserId = User.Identity.GetUserId();
            var ctx           = new FriendRequestDbContext();
            var request       = ctx.Requests.FirstOrDefault(r => r.RecieverId == currentUserId && r.SenderId == userId);

            if (request != null)
            {
                ctx.Requests.Remove(request);
                ctx.SaveChanges();
            }

            return(Redirect(Request.UrlReferrer.ToString()));
        }
        public ActionResult Ignore(string id)
        {
            var requestsContext = new FriendRequestDbContext();
            var userId          = User.Identity.GetUserId();
            var requestToRemove = requestsContext.FriendRequests.FirstOrDefault(u => u.UserId == id && u.FriendId == userId);

            if (requestToRemove != null)
            {
                requestsContext.FriendRequests.Remove(requestToRemove);
                requestsContext.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult NewRequests()
        {
            var hasRequests     = "false";
            var requestsContext = new FriendRequestDbContext();
            var userId          = User.Identity.GetUserId();
            var unseenRequests  = requestsContext.FriendRequests.Where(r => r.FriendId == userId && r.Seen == false).Count();

            if (unseenRequests > 0)
            {
                hasRequests = "true";
            }

            return(Content(hasRequests));
        }
        public ActionResult SendFriendRequest(string userId)
        {
            if (userId != User.Identity.GetUserId())
            {
                var ctx = new FriendRequestDbContext();
                ctx.Requests.Add(new FriendRequest()
                {
                    SenderId   = User.Identity.GetUserId(),
                    RecieverId = userId
                });
                ctx.SaveChanges();
            }

            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult Index()
        {
            var userId      = User.Identity.GetUserId();
            var userContext = new UserDbContext();

            var friendsContext = new FriendsDbContext();
            var friends        = friendsContext.Friends.Where(u => u.UserId == userId);
            var friendList     = new List <FriendsViewModel>();

            foreach (var friend in friends)
            {
                var user = userContext.Users.FirstOrDefault(u => u.UserId == friend.FriendId);
                friendList.Add(new FriendsViewModel {
                    UserId        = friend.FriendId,
                    ProfilePicUrl = user.ProfilePicUrl,
                    FullName      = user.FirstName + ' ' + user.LastName,
                    BirthYear     = user.BirthDate.Value.Year,
                    Category      = friend.Category
                });
            }

            var requestsContext = new FriendRequestDbContext();
            var requests        = requestsContext.FriendRequests.Where(u => u.FriendId == userId);
            var requestList     = new List <FriendsViewModel>();

            foreach (var request in requests)
            {
                var user = userContext.Users.FirstOrDefault(u => u.UserId == request.UserId);
                requestList.Add(new FriendsViewModel {
                    UserId        = request.UserId,
                    ProfilePicUrl = user.ProfilePicUrl,
                    FullName      = user.FirstName + ' ' + user.LastName,
                    BirthYear     = user.BirthDate.Value.Year,
                });
            }

            var friendCollection = new FriendCollectionViewModel {
                Friends  = friendList,
                Requests = requestList
            };

            ViewBag.CategoryList = GetList.Categories();
            return(View(friendCollection));
        }
Exemple #8
0
        public ActionResult _FriendRequestPartial()
        {
            var uId       = User.Identity.GetUserId();
            var fRequests = new FriendRequestDbContext().
                            Requests.Where(u => u.RecieverId == uId).ToList();

            var frqSenderIds = fRequests.Select(f => f.SenderId).ToList();

            var fProfiles = new ProfileDbContext().Profiles.Where(p => frqSenderIds.Contains(p.UserId)).ToList();

            /* var fProfiles = new ProfileDbContext().Profiles.Where(p =>
             *   (fRequests.Select(f => f.SenderId).Contains(p.UserId))).ToList();*/



            var fReqList = new List <FriendViewModel>();

            foreach (var p in fProfiles)
            {
                fReqList.Add(FriendViewModel.FromProfile(p));
            }

            return(PartialView("_FriendRequestPartial", fReqList));
        }
        // TODO: Move this action to ProfileController when it's done
        public ActionResult Add(string id)
        {
            var userContext     = new UserDbContext();
            var friendsContext  = new FriendsDbContext();
            var requestsContext = new FriendRequestDbContext();
            var userId          = User.Identity.GetUserId();

            // Check that the sender hasn't already sent a request
            var sentRequest = requestsContext.FriendRequests.Where(u => u.UserId == userId && u.FriendId == id);

            if (sentRequest.Count() == 0)
            {
                // Check that the recipient hasn't already sent a request (redirect to requests page if they have)
                var receivedRequest = requestsContext.FriendRequests.Where(u => u.UserId == id && u.FriendId == userId);
                if (receivedRequest.Count() == 0)
                {
                    // Check that the users aren't already friends && that the user isn't trying to add themself
                    var friends = friendsContext.Friends.Where(u => u.User.UserId == userId && u.Friend.UserId == id);
                    if (friends.Count() == 0 && userId != id)
                    {
                        requestsContext.FriendRequests.Add(new FriendRequestModel {
                            UserId   = userId,
                            FriendId = id,
                            Seen     = false
                        });
                        requestsContext.SaveChanges();
                    }
                }
                else
                {
                    return(RedirectToAction("Index", "Friends"));
                }
            }
            // TODO: Change to appropriate action once the method has been moved to ProfileController
            return(RedirectToAction("All", "User"));
        }