public ActionResult About(int id) { var userId = this.User.Identity.GetUserId(); AboutBookViewModel vm = this.service.GetAboutBookVmById(id, userId); return(View(vm)); }
public AboutBookViewModel GetAboutBookVmById(int id, string userId) { var book = this.Context.Books.Find(id); AboutBookViewModel vm = Mapper.Map <AboutBookViewModel>(book); vm.UserId = userId; return(vm); }
// GET: Book public ActionResult About(int?id) { if (id == null) { return(HttpNotFound()); } var book = _db.Books.Find(id); if (book == null) { return(HttpNotFound()); } var vm = new AboutBookViewModel { Book = book, RelatedBooks = _db.Books.Where(b => b.Id != id && b.Category.Id == book.Category.Id).Take(4) }; return(View(vm)); }
/// <summary> /// О книге /// </summary> /// <param name="id"></param> /// <returns></returns> public async Task <IActionResult> AboutBook(int?id) { if (id == null) { return(NotFound()); } AboutBookViewModel vm = new AboutBookViewModel(); await Task.Run(() => { // Получаем пользователя, если он авторизован if (User.Identity.IsAuthenticated) { userService.AddUserVisit(User.Identity.Name, (int)id); } }); vm.book = await context.Book.Include("IdAuthorNavigation").FirstOrDefaultAsync(m => m.Id == id); // Комментарии книги vm.RatingsBook = await context.Ratings .Where(i => i.IdBook == id) .Select(i => new RatingViewModel() { Comment = i.Comment, DateCreated = i.DateCreated, Mark = i.Mark, UserName = i.IdUser }).ToListAsync(); // Список комментариев книги // Если у книги есть комментарии, то посчитай среднюю оценку if (vm.RatingsBook.Count != 0) { vm.RatingBook = vm.RatingsBook.Average(i => i.Mark); } // Если юзер авторизован, то узнать возможность комментирования и добавления книги в избранное if (User.Identity.IsAuthenticated) { // Получаем возможность комментирования vm.canAddToFavorite = await context .FavoriteUserBook .FirstOrDefaultAsync(i => i.UserId == User.Identity.Name && i.IdBookFavorite == (int)id) != null ? true : false; // Получаем комментарий vm.MyComment = await context.Ratings .FirstOrDefaultAsync(i => i.IdBook == id && i.IdUser == User.Identity.Name); if (vm.MyComment != null) { // Убираем комментарии пользователя vm.RatingsBook = vm.RatingsBook.Where(i => i.UserName != vm.MyComment.IdUser).ToList(); } } if (vm.book == null) { return(NotFound()); } return(View("About", vm)); }