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" })); }