public ActionResult OtherUsersProfile(int otherUserId)
        {
            int userId = Convert.ToInt32(Session["userId"]);

            // check are they connected
            Connection connection = new Connection()
            {
                UserId      = userId,
                OtherUserId = otherUserId
            };

            bool usersAreConnected = _profileService.AreUsersConnected(connection);

            User myUserDetails    = _profileService.GetUserDetails(userId);
            User otherUserDetails = _profileService.GetUserDetails(otherUserId);

            CombinedUserProfilesViewModel bothProfilesViewModel = new CombinedUserProfilesViewModel()
            {
                OtherUserDetails  = otherUserDetails,
                MyUserDetails     = myUserDetails,
                UsersAreConnected = usersAreConnected,
                Connection        = connection
            };

            bothProfilesViewModel.OtherUsersConnections       = _profileService.GetAllOfAUsersConnectionsDetails(otherUserId);
            bothProfilesViewModel.OtherUsersBookReviews       = _bookService.GetAllOfAUsersBookReviewsDetails(otherUserId);
            bothProfilesViewModel.OtherUsersToReadBookDetails = new MyToReadDetails();
            bothProfilesViewModel.OtherUsersToReadBookDetails.ToReadBooksDetails = _bookService.GetBooksOnUsersBookShelf(otherUserId);

            ViewBag.Message = "Other User's Profile";
            return(View(bothProfilesViewModel));
        }
        public void GivenValidConnectionDetails_WhenDeleteConnectionCalled_ReturnCorrectCombinedProfileViewModel()
        {
            // Arrange
            Connection coonection = new Connection();

            coonection.UserId      = 5;
            coonection.OtherUserId = 10;

            CombinedUserProfilesViewModel combinedDetails = new CombinedUserProfilesViewModel();

            combinedDetails.Connection = coonection;
            using (var scope = Container.BeginLifetimeScope())
            {
                _profilesController = scope.Resolve <ProfilesController>();
                _profilesController.CreateConnectionBetweenUsers(combinedDetails);

                // Act
                var result = _profilesController.DeleteConnectionBetweenUsers(combinedDetails) as RedirectToRouteResult;

                // Assert
                Assert.IsNotNull(result);
                var values      = result.RouteValues.Values;
                var userDetails = values.First();

                Assert.AreSame(userDetails, combinedDetails.MyUserDetails);
                Assert.IsTrue(values.Contains(CombinedUserProfilesViewModel.Success));
                Assert.IsTrue(values.Contains(controllerName));
                Assert.IsTrue(values.Contains(actionCalledOtherUsersProfile));
            }
        }
        public ActionResult CreateConnectionBetweenUsers(CombinedUserProfilesViewModel bothUserProfileDetails)
        {
            bool isConnectionCreated = _profileService.AddConnection(bothUserProfileDetails.Connection);

            bothUserProfileDetails.UsersAreConnected = isConnectionCreated;

            bothUserProfileDetails.ConnectionWasCreated = (isConnectionCreated) ? CombinedUserProfilesViewModel.Success :
                                                          CombinedUserProfilesViewModel.Failed;

            return(RedirectToAction("OtherUsersProfile", "Profiles", bothUserProfileDetails));
        }
 public bool undoCreateConnectionAdditionToDb(CombinedUserProfilesViewModel combinedUserDetails)
 {
     _profilesController.DeleteConnectionBetweenUsers(combinedUserDetails);
     return(true);
 }