public JsonResult AddFriend()
        {
            if (Request.Form["user_id"] != null)
            {
                var targetUserProfile    = _userProfileService.GetUserProfile(new Guid(Request.Form["user_id"]));
                var initiatorUserProfile = _userProfileService.GetUserProfileByUserId(new Guid(User.Identity.GetUserId()));

                var friendRequest = _friendRequestService.CheckIfFriendRequestExists(initiatorUserProfile.Id, targetUserProfile.Id);
                if (friendRequest != null)
                {
                    //a friend request is active so we cancel it
                    _friendRequestService.DeleteFriendRequest(friendRequest.Id);
                    return(Json(new { Message = "friend request canceled" }));
                }

                var friendship = _friendsService.CheckFriendship(targetUserProfile.Id, initiatorUserProfile.Id);

                if (friendship == true)
                {
                    //user is already friend so we unfriend him
                    _friendsService.RemoveFriend(targetUserProfile.Id, initiatorUserProfile.Id);
                    return(Json(new { Message = "friend removed" }));
                }
                else
                {
                    // user is not friend so we send friend request
                    var friendRequestFeedback = _friendRequestService.CreateFriendRequest(initiatorUserProfile.Id, targetUserProfile.Id);
                    if (friendRequestFeedback == true)
                    {
                        return(Json(new { Message = "friend request sent" }));
                    }
                    else
                    {
                        return(Json(new { Message = "failed to send friend request" }));
                    }
                }
            }
            return(Json(new { Message = "invalid user_id parameter" }));
        }