Exemple #1
0
        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);
        }
Exemple #3
0
        // 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));
        }
Exemple #4
0
        /// <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));
        }