示例#1
0
        public BookDetailsModel GetBookDetails(string userId, long id)
        {
            var book = _context.Books.Include(b => b.Authors).Include(b => b.TagConnectors).ThenInclude(tc => tc.Tag).Include(b => b.FavouriteConnectors).First(b => b.Id == id);

            var result = new BookDetailsModel
            {
                AuthorsNames   = book.Authors.Select(a => a.Name).ToList(),
                Cover          = book.CoverId,
                DatePublished  = book.DatePublished,
                Description    = book.Description,
                FavouriteCount = book.FavouriteConnectors.Count,
                Id             = book.Id,
                Rateing        = book.ReviewScore,
                ReviewCount    = _context.Reviews.Where(r => r.BookId == id && r.Description.Length > 1).Count(),
                Tags           = book.TagConnectors.Select(tc => tc.Tag.Label).ToList(),
                Title          = book.Title
            };

            result.Reviews = _context.Reviews.Include(r => r.User).Where(r => r.BookId == id && r.Description.Length > 1).OrderByDescending(r => r.Date).Take(10).Select(Mapper.Mapper.MapReviewToModelExpression()).ToList();
            var myReview = _context.Reviews.FirstOrDefault(r => r.UserId == userId && r.BookId == id);

            if (myReview != null)
            {
                result.MyReview = _mapper.MapReviewEntityToModel(myReview);
            }
            else
            {
                result.MyReview = new ReviewModel {
                    Date = DateTime.Now, BookId = id, UserId = userId, BookTitle = result.Title
                };
            }

            return(result);
        }
示例#2
0
        public async Task <IActionResult> Add()
        {
            var authors = await this.authorService.List();

            var authorList = authors
                             .ToList()
                             .Select(a => new SelectListItem
            {
                Value = $"{a.Id}",
                Text  = $"{a.Author}"
            })
                             .ToList();

            var categories = await this.categoryService.All();

            var categoryList = categories
                               .ToList()
                               .Select(c => new SelectListItem
            {
                Value = $"{c.Id}",
                Text  = $"{c.Name}"
            })
                               .ToList();

            var booksModel = new BookDetailsModel
            {
                Authors      = authorList,
                CategoryList = categoryList,
                ReleaseDate  = DateTime.Now
            };

            return(View(booksModel));
        }
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var viewModel = new BookDetailsModel();

            viewModel.Books = await _context.BOOKS
                              .Include(b => b.Genre)
                              .Include(b => b.Publisher)
                              .FirstOrDefaultAsync(m => m.BookID == id);

            viewModel.BookCopies = await _context.BOOKCOPIES
                                   .Where(bc => bc.BookID == id)
                                   .Include(bc => bc.Retailer)
                                   .ToListAsync(); //Get Book Copies List


            if (viewModel == null)
            {
                return(NotFound());
            }

            return(View(viewModel));
        }
示例#4
0
        public async Task <IActionResult> Add(BookDetailsModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Add)));
            }

            var authorExists = await this.authorService.Exists(model.AuthorId);

            if (!authorExists)
            {
                ModelState.AddModelError(nameof(BookDetailsModel.AuthorId), "Author does not exist.");
                return(View(model));
            }

            var id = await this.bookService.Create(
                model.Title.Trim(),
                model.Description.Trim(),
                model.Price,
                model.Copies,
                model.Edition,
                model.AgeRestriction,
                model.ReleaseDate,
                model.AuthorId,
                model.CategoriesId);

            return(RedirectToAction(nameof(All)));
        }
        public IHttpActionResult EditBook(BookDetailsModel book)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var bookId = _bookService.UpdateBook(book);

            return(Ok(bookId));
        }
示例#6
0
        public BookDetailsViewModel(BookViewModel bookViewModel)
        {
            _book = new BookDetailsModel(bookViewModel);
            LikeUnlikeBookCommand = new Tools.RelayCommand((arg) =>
                                                           { LikeUnlike(); });

            BackCommand = new Tools.RelayCommand((arg) =>
                                                 { Tools.NavigationController.GetInstance().TryGoBack(); });

            CheckIsFav();
        }
示例#7
0
        // GET: Books/Details/5
        public ActionResult Details(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Books books = db.Books.Find(id);

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

            var viewModel = new BookDetailsModel();

            viewModel.Book = new Books
            {
                id          = books.id,
                title       = books.title,
                year        = books.year,
                description = books.description,
                cover       = books.cover
            };

            var details = RelatedData(id);

            viewModel.Details = details;

            var user_books = db.User_Books.ToList();

            string user_id = null;

            if (User.Identity.IsAuthenticated)
            {
                user_id = User.Identity.GetUserId();

                foreach (User_Books ub in user_books)
                {
                    if (user_id == ub.UserId && id == ub.BookId)
                    {
                        viewModel.isFavorite   = ub.isFavorite;
                        viewModel.isOnWishList = ub.isOnWishList;
                        viewModel.isRead       = ub.isRead;
                        viewModel.rating       = ub.rating;
                        viewModel.comment      = ub.comment;
                    }
                }
            }


            return(View(viewModel));
        }
示例#8
0
        public ActionResult Edit(BookDetailsModel editedBook)
        {
            if (ModelState.IsValid)
            {
                var books = db.Books.Find(editedBook.Book.id);

                books.title       = editedBook.Book.title;
                books.year        = editedBook.Book.year;
                books.description = editedBook.Book.description;


                if (editedBook.cover != null)
                {
                    books.cover = editedBook.cover.FileName;
                    editedBook.cover.SaveAs(HttpContext.Server.MapPath(ConfigurationManager.AppSettings["bookCovers"]) + books.cover);
                }

                string user_id = null;

                if (User.Identity.IsAuthenticated)
                {
                    user_id = User.Identity.GetUserId();

                    foreach (var item in db.User_Books)
                    {
                        if (item.BookId == editedBook.Book.id && item.UserId == user_id)
                        {
                            db.Entry(item).State = EntityState.Deleted;
                        }
                    }

                    var user_books = new User_Books()
                    {
                        UserId       = user_id,
                        BookId       = editedBook.Book.id,
                        isFavorite   = editedBook.isFavorite,
                        isOnWishList = editedBook.isOnWishList,
                        isRead       = editedBook.isRead,
                        rating       = editedBook.rating,
                        comment      = editedBook.comment
                    };

                    db.User_Books.Add(user_books);
                }

                db.Entry(books).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(editedBook));
        }
示例#9
0
        public static List <BookDetailsModel> GetBookDetailsModel(IReadOnlyList <BookOutput> books)
        {
            List <BookDetailsModel> booksModel = new List <BookDetailsModel>();

            foreach (var bk in books)
            {
                var book = new BookDetailsModel(
                    bk.BookId,
                    bk.Price,
                    bk.ISBN,
                    bk.Title,
                    GetAuthorDetailsModel(bk.Authors)
                    );
                booksModel.Add(book);
            }
            return(booksModel);
        }
示例#10
0
 public bool UpdateBook(BookDetailsModel bookUpdate)
 {
     throw new NotImplementedException();
 }
示例#11
0
 public int AddBook(BookDetailsModel bookAdd)
 {
     throw new NotImplementedException();
 }
示例#12
0
        // GET: Books/Edit/5
        public ActionResult Edit(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Books books = db.Books.Find(id);

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

            var editModel = new BookDetailsModel();

            editModel.Book = new Books
            {
                id          = books.id,
                title       = books.title,
                year        = books.year,
                description = books.description,
                cover       = books.cover
            };

            var details = RelatedData(id);

            var user_books = db.User_Books.ToList();

            int rate = 0;

            string user_id = null;

            if (User.Identity.IsAuthenticated)
            {
                user_id = User.Identity.GetUserId();

                foreach (User_Books ub in user_books)
                {
                    if (user_id == ub.UserId && id == ub.BookId)
                    {
                        editModel.isFavorite   = ub.isFavorite;
                        editModel.isOnWishList = ub.isOnWishList;
                        editModel.isRead       = ub.isRead;
                        editModel.rating       = ub.rating;
                        editModel.comment      = ub.comment;

                        rate = ub.rating;
                    }
                }
            }

            var RatingList = new List <int>();

            for (int i = 0; i < 11; i++)
            {
                RatingList.Add(i);
            }
            ViewBag.Rating = new SelectList(RatingList, null, null, rate);

            editModel.Details = details;

            return(View(editModel));
        }