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 }); }
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())); }
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 };
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); }