예제 #1
0
        public WhenIsbnScannedCalled()
        {
            _findBookQueryHandlerMock = new Mock <IQueryHandler <FindBookQuery, IList <Book> > >();

            _booksHub    = new BooksHub(new Mock <IQueryHandler <GetLibraryStateQuery, LibraryState> >().Object, _findBookQueryHandlerMock.Object, new Mock <IQueryHandler <AddNewBookQuery, bool> >().Object);
            _clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            _booksHub.Clients = _clientsMock.Object;
        }
        public ActionResult Edit(BookEditViewModel viewModel)
        {
            var updatedbook = db.Books.Include(c => c.BookImageMappings).Where(c => c.Id == viewModel.Id).Single();

            PopulateAllDropDownLists(updatedbook.AuthorId, updatedbook.PublisherId, updatedbook.GenreId);
            if (TryUpdateModel(updatedbook, "", new string[] { "Code", "Title", "Description", "Isbn",
                                                               "ReleaseDate", "Pages", "AuthorId", "PublisherId", "GenreId", "Price", "Availability" }))
            {
                if (updatedbook.BookImageMappings == null)
                {
                    updatedbook.BookImageMappings = new List <BookImageMapping>();
                }
                string[] bookImages = viewModel.BookImages.Where(c => !string.IsNullOrEmpty(c)).ToArray();

                for (int i = 0; i < bookImages.Length; i++)
                {
                    var imageMappingForEdit = updatedbook.BookImageMappings.Where(c => c.ImageNumber == i).FirstOrDefault();
                    var image = db.BookImages.Find(int.Parse(bookImages[i]));

                    if (imageMappingForEdit == null)
                    {
                        updatedbook.BookImageMappings.Add(new BookImageMapping
                        {
                            ImageNumber = i,
                            BookImage   = image,
                            BookImageId = image.Id
                        });
                    }
                    else
                    {
                        if (imageMappingForEdit.BookImageId != int.Parse(bookImages[i]))
                        {
                            imageMappingForEdit.BookImage = image;
                        }
                    }
                }
                for (int i = bookImages.Length; i < Constants.NumberOfProductImages; i++)
                {
                    var imageMappingForEdit = updatedbook.BookImageMappings.Where(c => c.ImageNumber == i).FirstOrDefault();
                    if (imageMappingForEdit != null)
                    {
                        db.BookImageMappings.Remove(imageMappingForEdit);
                    }
                }
                db.SaveChanges();
                BooksHub.BroadcastData();
                return(RedirectToAction("Index"));
            }
            return(View(viewModel));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Book book            = db.Books.Find(id);
            var  orderLinesCount = db.OrderLines.Where(a => a.BookId == book.Id).Count();

            if (orderLinesCount == 0)
            {
                db.Books.Remove(book);
                db.SaveChanges();
            }
            else
            {
                db.Entry(book).State = EntityState.Modified;
                book.Availability    = Enums.Availability.Unavailable;
                db.SaveChanges();
            }
            BooksHub.BroadcastData();
            return(RedirectToAction("Index"));
        }
        public ActionResult Create(BookViewModel viewModel)
        {
            Book book = new Book();

            book.AuthorId          = viewModel.AuthorId;
            book.Code              = viewModel.Code;
            book.Description       = viewModel.Description;
            book.GenreId           = viewModel.GenreId;
            book.Isbn              = viewModel.Isbn;
            book.Pages             = viewModel.Pages;
            book.Price             = viewModel.Price;
            book.PublisherId       = viewModel.PublisherId;
            book.ReleaseDate       = viewModel.ReleaseDate;
            book.Title             = viewModel.Title;
            book.BookImageMappings = new List <BookImageMapping>();
            string[] bookImages = viewModel.BookImages.Where(c => !string.IsNullOrEmpty(c)).ToArray();
            for (int i = 0; i < bookImages.Length; i++)
            {
                book.BookImageMappings.Add(new BookImageMapping
                {
                    BookImage   = db.BookImages.Find(int.Parse(bookImages[i])),
                    ImageNumber = i
                });
            }
            if (ModelState.IsValid)
            {
                db.Books.Add(book);
                db.SaveChanges();
                BooksHub.BroadcastData();
                return(RedirectToAction("Index"));
            }

            viewModel.AuthorList    = new SelectList(db.Authors, "Id", "FullName", book.AuthorId);
            viewModel.GenreList     = new SelectList(db.Genres, "Id", "Title", book.GenreId);
            viewModel.PublisherList = new SelectList(db.Publishers, "Id", "Name", book.PublisherId);
            viewModel.ImageLists    = new List <SelectList>();
            for (int i = 0; i < Constants.NumberOfProductImages; i++)
            {
                viewModel.ImageLists.Add(new SelectList(db.BookImages, "Id", "FileName", viewModel.BookImages[i]));
            }
            return(View(viewModel));
        }