コード例 #1
0
        public void RatePost_UserNotLoggedInReturnsCorrectView_ReturnedViewEqualsLogin()
        {
            var viewModel = new UserRatingViewModel
            {
                UserRating = new UserRating
                {
                    UserBeingRatedID = 3,
                    Comment          = "Nice",
                    RaterUserID      = 1
                }
            };

            using (UserController controller = new UserController(new TwitchIntegrationStub(),
                                                                  new TwitterIntegrationStub(),
                                                                  new UserManagerFake(),
                                                                  new UserRatingManagerFake(),
                                                                  new RatingManagerFake(),
                                                                  new SessionHelperFake(),
                                                                  new YoutubeIntegrationStub()))
            {
                var result = controller.Rate(viewModel) as RedirectToRouteResult;

                string expectedController = "Login";
                string expectedAction     = "Login";

                Assert.AreEqual(expectedController, result.RouteValues["Controller"]);
                Assert.AreEqual(expectedAction, result.RouteValues["Action"]);
            }
        }
コード例 #2
0
        public ActionResult EditRating(UserRatingViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var loggedInUser = _sessionHelper.Get("CurrentUser") as User;

                if (loggedInUser == null)
                {
                    return(RedirectToAction("Login", "Login"));
                }

                var userRating = viewModel.UserRating;
                userRating.RaterUserID = loggedInUser.ID;

                _userRatingManger.Update(userRating);

                string ratedUserName = _userManager.GetById(viewModel.UserRating.UserBeingRatedID).UserName;

                return(RedirectToAction(nameof(User), "User", new { userName = ratedUserName }));
            }
            else
            {
                viewModel.Ratings = _ratingManager.GetAll();
                ViewBag.Message   = "An error occurred when submitting rating.";

                return(View(nameof(Rate), viewModel));
            }
        }
コード例 #3
0
        public ActionResult Rate(string userName)
        {
            var loggedInUser = _sessionHelper.Get("CurrentUser") as User;

            if (loggedInUser == null)
            {
                return(RedirectToAction("Login", "Login"));
            }

            var userToRate = _userManager.GetByUserName(userName);

            if (userToRate == null)
            {
                return(HttpNotFound());
            }

            UserRatingViewModel viewModel = new UserRatingViewModel
            {
                Ratings    = _ratingManager.GetAll(),
                UserRating = new UserRating
                {
                    UserBeingRatedID = userToRate.ID,
                    UserBeingRated   = userToRate,
                    RaterUserID      = loggedInUser.ID
                }
            };

            return(View(nameof(Rate), viewModel));
        }
コード例 #4
0
        public ActionResult EditRating(string userName)
        {
            var loggedInUser = _sessionHelper.Get("CurrentUser") as User;

            if (loggedInUser == null)
            {
                return(RedirectToAction("Login", "Login"));
            }

            var userToRate = _userManager.GetByUserName(userName);

            if (userToRate == null)
            {
                return(HttpNotFound());
            }

            UserRatingViewModel viewModel = new UserRatingViewModel
            {
                Ratings    = _ratingManager.GetAll(),
                UserRating = _userRatingManger.GetById(loggedInUser.ID, userToRate.ID)
            };

            if (viewModel.UserRating == null)
            {
                return(HttpNotFound());
            }

            return(View(nameof(EditRating), viewModel));
        }
コード例 #5
0
        public async Task <IActionResult> UserRating(int pageNumber = 1, int pageSize = 5)
        {
            var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);

            int excludeRecords = (pageSize * pageNumber) - pageSize;
            int recordsCount   = (await this.reviewsService.GetAll <ReviewViewModel>()).Count(x => x.UserId == userId);

            UserRatingViewModel viewModel = new UserRatingViewModel
            {
                Reviews         = (await this.reviewsService.GetAll <ReviewViewModel>()).Where(x => x.UserId == userId).OrderByDescending(x => x.CreatedOn),
                CurrentPage     = pageNumber,
                ReviewsCount    = recordsCount,
                AvatarViewModel = new ChangeAvatarViewModel
                {
                    CurrentAvatar = await this.profilePicturesService.GetAvatarByUserId(userId),
                },
            };

            if (recordsCount % 5 == 0)
            {
                viewModel.PagesCount = recordsCount / 5;
            }
            else
            {
                viewModel.PagesCount = (recordsCount / 5) + 1;
            }

            viewModel.Reviews = viewModel.Reviews.Skip(excludeRecords).Take(pageSize).ToList();
            return(this.View(viewModel));
        }
コード例 #6
0
ファイル: AccountController.cs プロジェクト: njeeegos/GymBro
        public ActionResult DeleteRating(string userId)
        {
            var rater = User.Identity.GetUserId();
            var rate  = _context.UserRatings.SingleOrDefault(ssf => ssf.UserId == userId && ssf.RaterId == rater);

            if (rate != null)
            {
                _context.UserRatings.Remove(rate);
                _context.SaveChanges();
            }

            var user = _context.Users.Find(userId);
            UserRatingViewModel model = new UserRatingViewModel
            {
                appUser = user,
                IsRated = true
            };

            model.appUser.Ratings = _context.UserRatings.Where(x => x.UserId == userId).ToList();
            double sum = 0;

            foreach (var r in model.appUser.Ratings)
            {
                sum += r.Value;
            }
            if (model.appUser.Ratings.Count != 0)
            {
                model.appUser.AverageRating = sum / (double)model.appUser.Ratings.Count;
            }

            return(View("Details", model));
        }
コード例 #7
0
 private UserRating MapViewToEntity(UserRatingViewModel userRating)
 {
     return(new UserRating()
     {
         RecipeId = userRating.RecipeId,
         UserId = userRating.UserId,
         Rating = userRating.Rating
     });
 }
コード例 #8
0
        public ActionResult Create(UserRatingViewModel userRating)
        {
            if (ModelState.IsValid)
            {
                var userRatingMap = MapViewToEntity(userRating);
                db.UserRatings.Add(userRatingMap);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.RecipeId = new SelectList(db.Recipes, "RecipeId", "Title", userRating.RecipeId);
            return(View(userRating));
        }
コード例 #9
0
ファイル: AccountController.cs プロジェクト: njeeegos/GymBro
        public ActionResult Details(string id = "")
        {
            var userId = (id == "") ? User.Identity.GetUserId() : id;

            if (userId == "")
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ApplicationUser applicationUser = _context.Users.Find(userId);

            if (applicationUser == null)
            {
                return(HttpNotFound());
            }

            applicationUser.Ratings = _context.UserRatings.Where(x => x.UserId == userId).ToList();

            double sum = 0;

            foreach (var rating in applicationUser.Ratings)
            {
                sum += rating.Value;
            }

            if (applicationUser.Ratings.Count != 0)
            {
                applicationUser.AverageRating = sum / (double)applicationUser.Ratings.Count;
            }

            var rater = User.Identity.GetUserId();
            var rate  = _context.UserRatings.SingleOrDefault(ssf => ssf.UserId == userId && ssf.RaterId == rater);
            var v     = true;

            if (rate != null)
            {
                v = false;
            }
            UserRatingViewModel model = new UserRatingViewModel
            {
                appUser = applicationUser,
                IsRated = v
            };

            //mozda treba da se doda punjenje ocena
            if (id == "" || id == User.Identity.GetUserId())
            {
                return(View("Profile", applicationUser));
            }
            return(View(model));
        }
コード例 #10
0
        public void RatePost_RatingSuccessfullReturnsCorrectView_ReturnedViewEqualsUser()
        {
            var session = new SessionHelperFake();

            var user = new User
            {
                ID = 1
            };

            session.Add("CurrentUser", user);

            var viewModel = new UserRatingViewModel
            {
                UserRating = new UserRating
                {
                    UserBeingRatedID = 3,
                    Comment          = "Nice",
                    RaterUserID      = 1
                }
            };

            using (UserController controller = new UserController(new TwitchIntegrationStub(),
                                                                  new TwitterIntegrationStub(),
                                                                  new UserManagerFake(),
                                                                  new UserRatingManagerFake(),
                                                                  new RatingManagerFake(),
                                                                  session,
                                                                  new YoutubeIntegrationStub()))
            {
                var result = controller.Rate(viewModel) as RedirectToRouteResult;

                string expectedController = "User";
                string expectedAction     = "User";

                Assert.AreEqual(expectedController, result.RouteValues["Controller"]);
                Assert.AreEqual(expectedAction, result.RouteValues["Action"]);
            }
        }
コード例 #11
0
        public async Task <IActionResult> Rate(UserRatingViewModel model)
        {
            var petPhotoModel = await _context.PetPhotos.FirstOrDefaultAsync(m => m.Id == model.PetPhotoModel.Id);

            model.RatingModel.PetPhotoModelId = model.PetPhotoModel.Id;
            model.RatingModel.UserModelId     = model.UserModel.Id;

            var ratingModels = _context.Ratings.Where(u => u.PetPhotoModelId == petPhotoModel.Id).ToList();

            var existingRating = await _context.Ratings.FirstOrDefaultAsync(m => m.UserModelId == model.UserModel.Id);

            if (existingRating != null)
            {
                int existingIndex = 0;
                for (int i = 0; i < ratingModels.Count; i++)
                {
                    if (ratingModels[i].Id == existingRating.Id)
                    {
                        existingIndex = i;
                        break;
                    }
                }
                ratingModels[existingIndex] = model.RatingModel;
                _context.Entry(existingRating).CurrentValues.SetValues(model.RatingModel);
                CalculateAverageRatings(ratingModels, petPhotoModel);
            }
            else
            {
                ratingModels.Add(model.RatingModel);
                _context.Ratings.Add(model.RatingModel);
                CalculateAverageRatings(ratingModels, petPhotoModel);
            }

            await _context.SaveChangesAsync();

            return(RedirectToAction("Rate", "Details", new { id = model.PetPhotoModel.Id }));
        }
コード例 #12
0
        public void RatePost_InvalidModelStateReturnsCorrectMessage_ExpectedMessageEqualsActual()
        {
            var session = new SessionHelperFake();

            var user = new User
            {
                ID = 1
            };

            session.Add("CurrentUser", user);

            var viewModel = new UserRatingViewModel
            {
                UserRating = new UserRating
                {
                    UserBeingRatedID = 3,
                    Comment          = "Nice",
                    RaterUserID      = 1
                }
            };

            using (UserController controller = new UserController(new TwitchIntegrationStub(),
                                                                  new TwitterIntegrationStub(),
                                                                  new UserManagerFake(),
                                                                  new UserRatingManagerFake(),
                                                                  new RatingManagerFake(),
                                                                  session,
                                                                  new YoutubeIntegrationStub()))
            {
                controller.ModelState.AddModelError("SessionName", "Required");
                var result = controller.Rate(viewModel) as ViewResult;

                string expectedMessage = "An error occurred when submitting rating.";

                Assert.AreEqual(expectedMessage, result.ViewBag.Message);
            }
        }