Beispiel #1
0
        public async Task <BookPostResponseViewModel> Create(BookPostViewModel book)
        {
            var bookExists = await UnitOfWork.BookRepository.Any(x => x.ISBN.Equals(book.ISBN));

            //Jeśli książka już istneje to nie ma sensu jej dodawać
            if (bookExists)
            {
                var result =
                    await UnitOfWork.BookRepository.SingleOrDefault(x => x.ISBN.Equals(book.ISBN));

                return(new BookPostResponseViewModel
                {
                    Id = result.Id,
                    Title = result.Title,
                    SubMainCategoryName = result.SubMainCategories.First().Name,
                    MainCategoryName = result.SubMainCategories.First().MainCategory.Name
                });
            }

            var authors           = new List <Author>();
            var subMainCategories = new List <SubMainCategory>();
            var bookCategories    = new List <BookCategory>();

            foreach (var authorId in book.Authors)
            {
                var author = await UnitOfWork.AuthorRepository.Find(authorId);

                authors.Add(author);
            }

            foreach (var subMainCategoryId in book.SubMainCategoryies)
            {
                var subMainCategory = await UnitOfWork.SubMainCategoryRepository.Find(subMainCategoryId);

                subMainCategories.Add(subMainCategory);
            }

            if (book.BookCategories != null)
            {
                foreach (var bookCategoryId in book.BookCategories)
                {
                    var bookCategory = await UnitOfWork.BookCategoryRepository.Find(bookCategoryId);

                    bookCategories.Add(bookCategory);
                }
            }

            var postBook = BookPostViewModelToBook(book, authors, subMainCategories, bookCategories);

            var newBook = await UnitOfWork.BookRepository.Add(postBook);

            return(new BookPostResponseViewModel
            {
                Id = newBook.Id,
                Title = newBook.Title,
                SubMainCategoryName = newBook.SubMainCategories.First().Name,
                MainCategoryName = newBook.SubMainCategories.First().MainCategory.Name
            });
        }
Beispiel #2
0
        public async Task <ActionResult> Create(BookPostViewModel book)
        {
            if (ModelState.IsValid)
            {
                var newBook = await BookService.Create(book);

                //redirect to widoku szczegółowego książki
                return(RedirectToAction("GetSingleBook", "Books", new
                {
                    area = "", mainCategoryName = newBook.MainCategoryName, subMainCategoryName = newBook.SubMainCategoryName,
                    id = newBook.Id, title = newBook.Title
                }));
            }
            return(View(await BookService.GetBookCreateViewModel()));
        }
Beispiel #3
0
 private Book BookPostViewModelToBook(BookPostViewModel book, List <Author> authors, List <SubMainCategory> subMainCategories, List <BookCategory> bookCategories)
 => new Book
 {
     Bestseller        = book.Bestseller,
     BookSize          = book.BookSize,
     Cover             = GetCover(book.Cover),
     Language          = GetLaguage(book.Language),
     Description       = book.Description,
     ISBN              = book.ISBN,
     Image             = book.Image,
     PageSize          = book.PageSize,
     Price             = decimal.Parse(book.Price, CultureInfo.InvariantCulture),
     PublishDate       = DateTime.ParseExact(book.PublishDate, "dd/MM/yyyy", CultureInfo.InvariantCulture),
     PublishingId      = book.PublishingId,
     Quantity          = book.Quantity,
     Title             = book.Title,
     TitleForDisplay   = book.TitleForDisplay,
     Author            = authors,
     SubMainCategories = subMainCategories,
     BookCategories    = bookCategories
 };
Beispiel #4
0
        public async Task <BookPostViewModel> GetBookCreateViewModel()
        {
            var languages   = Enum.GetValues(typeof(Language)).Cast <Language>().Select(GetDescription).ToList();
            var covers      = Enum.GetValues(typeof(Cover)).Cast <Cover>().Select(GetDescription).ToList();
            var publishings = await UnitOfWork.PublishingRepository.GetAll();

            var authors = await UnitOfWork.AuthorRepository.GetAll();

            var bookCategories = await UnitOfWork.BookCategoryRepository.FindAll(b => b.SubMainCategory.Id == 1, b => b.OrderBy(x => x.NameForDisplay));

            var subMainCategories = await UnitOfWork.SubMainCategoryRepository.GetAll();

            var groupedSubMainCategories = subMainCategories.GroupBy(x => x.MainCategory.NameForDisplay);

            var languagesSelectList = languages.Select(l => new SelectListItem
            {
                Value = l,
                Text  = l
            });

            var coversSelectList = covers.Select(c => new SelectListItem
            {
                Value = c,
                Text  = c
            });

            var publishingSelectList = publishings.Select(p => new SelectListItem
            {
                Value = p.Id.ToString(CultureInfo.InvariantCulture),
                Text  = p.NameForDisplay
            });

            var authorSelectList = authors.Select(a => new SelectListItem
            {
                Value = a.Id.ToString(CultureInfo.InvariantCulture),
                Text  = a.FirstName + " " + a.LastNameForDisplay
            });

            //var bookCategorySelectList = bookCategories.Select(b => new SelectListItem
            //{
            //    Value = b.Id.ToString(CultureInfo.InvariantCulture),
            //    Text = b.NameForDisplay
            //});
            var bookCategorySelectList = new List <SelectListItem>();
            var vm = new BookPostViewModel
            {
                LanguagesSelectList       = languagesSelectList,
                CoversSelectList          = coversSelectList,
                PublishingSelectList      = publishingSelectList,
                AuthorSelectList          = authorSelectList,
                BookCategorySelectList    = bookCategorySelectList,
                SubMainCategorySelectList = new List <SelectListItem>()
            };

            //grupujemy podkategorie pod względem głównych kategorii
            foreach (var mainCategory in groupedSubMainCategories)
            {
                var optGroup = new SelectListGroup {
                    Name = mainCategory.Key
                };
                foreach (var subMainCategory in mainCategory)
                {
                    vm.SubMainCategorySelectList.Add(new SelectListItem
                    {
                        Value = subMainCategory.Id.ToString(CultureInfo.InvariantCulture),
                        Text  = subMainCategory.NameForDisplay,
                        Group = optGroup
                    });
                }
            }

            return(vm);
        }