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