Exemple #1
0
        public DetailsInputViewModel GoToRandomBook(IQueryable <ApplicationUser> username)
        {
            Random rnd      = new Random();                 //Create a new instance of the random class
            var    allBooks = GetAllBooks();                //Retrieve all books from the database
            int    randomId = rnd.Next(GetHighestBookId()); //Get a (pseudo)random Id in the range of Id's

            while (GetBookById(randomId) == null)
            {                                               //Some Id's that are fetched don't belong to any book
                randomId = rnd.Next(GetHighestBookId());    //so a new Id has to be fetched until it is valid
            }                                               //to avoid a NullReferenceException
            var newbook = new DetailsInputViewModel();

            newbook.Book    = GetBookById(randomId);        //newbook is of type DetailsInputViewModel which will initally be empty
            newbook.Reviews = GetReviews(randomId);         //so we mmust populate it manually with the book and it's reviews
            ChangeUserIdToName(newbook.Reviews, username);  //Display the username instead of the userId on the reviews
            return(newbook);
        }
        public async Task <IActionResult> Details(int BookId, DetailsInputViewModel model)
        {
            if (!ModelState.IsValid)
            {
                ViewData["ErrorMessage"] = "Error";
                return(RedirectToAction("Details", "Home"));
            }
            var review = model.Input;

            review.BookId = BookId;

            _reviewService.ProcessReview(review); //Error handling
            var user = await _userManager.GetUserAsync(User);

            review.UserId = user.Id;
            _bookService.AddReview(review);

            return(RedirectToAction("Details", "Home"));
        }
        public IActionResult Details(int id)
        {
            if (id == 0)
            {
                return(View("Error"));
            }
            var idbook  = _bookService.GetBookById(id);
            var reviews = _bookService.GetReviews(id);
            var details = new DetailsInputViewModel();

            var username = _userManager.Users;

            _bookService.ChangeUserIdToName(reviews, username); //Get username to show with the reviews

            details.Book    = idbook;
            details.Reviews = reviews;

            return(View(details));
        }