Exemplo n.º 1
0
        public async Task <IActionResult> Create(BookVM book)
        {
            if (book.Photo == null)
            {
                ModelState.AddModelError("", "Zəhmət olmasa şəkil seçin");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            if (!book.Photo.IsImage())
            {
                ModelState.AddModelError("", "Zəhmət olmasa şəkil seçin");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            if (!book.Photo.MaxLength(1024))
            {
                ModelState.AddModelError("", "Faylın ölçüsü 1 MB-dan az olmalıdır");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            string price = Request.Form["Price"];

            price = price.Replace('.', ',');
            decimal originalPrice = 0;

            originalPrice = decimal.Round(Convert.ToDecimal(price) * 1, 2);
            Book newBook = new Book
            {
                Name        = book.Name,
                Slug        = book.Slug,
                Description = book.Description,
                Price       = originalPrice,
                Count       = book.Count
            };
            Book existBook = _db.Books.FirstOrDefault(b => b.Name.ToLower().Trim() == book.Name.ToLower().Trim());

            if (existBook != null)
            {
                ModelState.AddModelError("", "Bu kitab mövcuddur");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            newBook.ImagePath = await book.Photo.SaveImg(_env.WebRootPath, "image");

            string authorsList = Request.Form["authors"];

            if (authorsList == null)
            {
                ModelState.AddModelError("", "Zəhmət olmasa yazar seçin");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            List <BookAuthor> bookAuthors = new List <BookAuthor>();

            string[]   authorArr = authorsList.Split(",");
            List <int> authorIds = new List <int>();

            foreach (string authorId in authorArr)
            {
                authorIds.Add(int.Parse(authorId));
            }

            foreach (int id in authorIds)
            {
                bookAuthors.Add(new BookAuthor
                {
                    BookId   = newBook.Id,
                    AuthorId = id
                });
            }

            string categoryList = Request.Form["categories"];

            if (categoryList == null)
            {
                ModelState.AddModelError("", "Zəhmət olmasa kateqoriya seçin");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            List <BookCategory> bookCategories = new List <BookCategory>();

            string[]   categoryArr = categoryList.Split(",");
            List <int> categoryIds = new List <int>();

            foreach (string categoryId in categoryArr)
            {
                categoryIds.Add(int.Parse(categoryId));
            }

            foreach (int id in categoryIds)
            {
                bookCategories.Add(new BookCategory
                {
                    BookId     = newBook.Id,
                    CategoryId = id
                });
            }
            BookFeature bookFeature = new BookFeature
            {
                PublishingPlace    = book.PublishingPlace,
                PublishingDate     = book.PublishingDate,
                PublishingLanguage = book.PublishingLanguage,
                OriginalLanguage   = book.OriginalLanguage,
                Translator         = book.Translator
            };
            string    publisherId = Request.Form["publishers"];
            Publisher publisher   = _db.Publishers.FirstOrDefault(p => p.Id == int.Parse(publisherId));

            if (publisher == null)
            {
                ModelState.AddModelError("", "Zəhmət olmasa yayın evi seçin");
                List <Author>    authors    = _db.Authors.ToList();
                List <Category>  categories = _db.Categories.ToList();
                List <Publisher> publishers = _db.Publishers.ToList();
                BookVM           model      = new BookVM
                {
                    Authors    = authors,
                    Categories = categories,
                    Publishers = publishers
                };
                return(View(model));
            }
            publisher.BookCount++;
            newBook.PublisherId    = publisher.Id;
            newBook.BookAuthors    = bookAuthors;
            newBook.BookCategories = bookCategories;
            newBook.BookFeature    = bookFeature;
            _db.Books.Add(newBook);
            await _db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Edit(int?id, BookVM editedBook)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Book book = _db.Books.Include(b => b.BookAuthors).ThenInclude(ba => ba.Author).Include(b => b.Publisher).Include(b => b.BookCategories).ThenInclude(bc => bc.Category).Include(b => b.BookFeature).FirstOrDefault(b => b.Id == id);

            if (book == null)
            {
                return(NotFound());
            }
            if (editedBook.Photo == null)
            {
                Book existBook = _db.Books.FirstOrDefault(b => b.Name.ToLower().Trim() == editedBook.Book.Name.ToLower().Trim());
                if (existBook != null)
                {
                    if (book.Name.ToLower().Trim() != existBook.Name.ToLower().Trim())
                    {
                        ModelState.AddModelError("", "Bu kitab mövcuddur");
                        List <Author>    authors    = _db.Authors.ToList();
                        List <Category>  categories = _db.Categories.ToList();
                        List <Publisher> publishers = _db.Publishers.ToList();
                        BookVM           model      = new BookVM
                        {
                            Book       = book,
                            Authors    = authors,
                            Categories = categories,
                            Publishers = publishers
                        };
                        return(View(model));
                    }
                }
                string price = Request.Form["Book.Price"];
                price = price.Replace('.', ',');
                decimal originalPrice = 0;
                originalPrice    = decimal.Round(Convert.ToDecimal(price) * 1, 2);
                book.Name        = editedBook.Book.Name;
                book.Slug        = editedBook.Book.Slug;
                book.Count       = editedBook.Book.Count;
                book.Price       = originalPrice;
                book.Description = editedBook.Book.Description;
                string authorsList = Request.Form["authors"];
                if (authorsList == null)
                {
                    ModelState.AddModelError("", "Zəhmət olmasa yazar seçin");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                List <BookAuthor> bookAuthors = new List <BookAuthor>();
                string[]          authorArr   = authorsList.Split(",");
                List <int>        authorIds   = new List <int>();
                foreach (string authorId in authorArr)
                {
                    authorIds.Add(int.Parse(authorId));
                }

                foreach (int authorId in authorIds)
                {
                    bookAuthors.Add(new BookAuthor
                    {
                        BookId   = book.Id,
                        AuthorId = authorId
                    });
                }

                string categoryList = Request.Form["categories"];
                if (categoryList == null)
                {
                    ModelState.AddModelError("", "Zəhmət olmasa kateqoriya seçin");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                List <BookCategory> bookCategories = new List <BookCategory>();
                string[]            categoryArr    = categoryList.Split(",");
                List <int>          categoryIds    = new List <int>();
                foreach (string categoryId in categoryArr)
                {
                    categoryIds.Add(int.Parse(categoryId));
                }

                foreach (int categoryId in categoryIds)
                {
                    bookCategories.Add(new BookCategory
                    {
                        BookId     = book.Id,
                        CategoryId = categoryId
                    });
                }
                BookFeature bookFeature = new BookFeature
                {
                    PublishingPlace    = editedBook.Book.BookFeature.PublishingPlace,
                    PublishingDate     = editedBook.Book.BookFeature.PublishingDate,
                    PublishingLanguage = editedBook.Book.BookFeature.PublishingLanguage,
                    OriginalLanguage   = editedBook.Book.BookFeature.OriginalLanguage,
                    Translator         = editedBook.Book.BookFeature.Translator
                };
                Publisher oldPublisher = new Publisher();
                Publisher newPublisher = new Publisher();
                string    publisherId  = Request.Form["publishers"];
                if (book.PublisherId != int.Parse(publisherId))
                {
                    oldPublisher = _db.Publishers.FirstOrDefault(p => p.Id == book.PublisherId);
                    oldPublisher.BookCount--;
                    newPublisher = _db.Publishers.FirstOrDefault(p => p.Id == int.Parse(publisherId));
                    newPublisher.BookCount++;
                    book.PublisherId = newPublisher.Id;
                }
                book.BookAuthors    = bookAuthors;
                book.BookCategories = bookCategories;
                book.BookFeature    = bookFeature;
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            else
            {
                if (!editedBook.Photo.IsImage())
                {
                    ModelState.AddModelError("", "Zəhmət olmasa şəkil seçin");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                if (!editedBook.Photo.MaxLength(1024))
                {
                    ModelState.AddModelError("", "Faylın ölçüsü 1 MB-dan az olmalıdır");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                Book existBook = _db.Books.FirstOrDefault(b => b.Name.ToLower().Trim() == editedBook.Book.Name.ToLower().Trim());
                if (existBook != null)
                {
                    if (book.Name.ToLower().Trim() != existBook.Name.ToLower().Trim())
                    {
                        ModelState.AddModelError("", "Bu kitab mövcuddur");
                        List <Author>    authors    = _db.Authors.ToList();
                        List <Category>  categories = _db.Categories.ToList();
                        List <Publisher> publishers = _db.Publishers.ToList();
                        BookVM           model      = new BookVM
                        {
                            Book       = book,
                            Authors    = authors,
                            Categories = categories,
                            Publishers = publishers
                        };
                        return(View(model));
                    }
                }
                Helpers.Helper.DeleteImg(_env.WebRootPath, "image", book.ImagePath);
                book.ImagePath = await editedBook.Photo.SaveImg(_env.WebRootPath, "image");

                string price = Request.Form["Book.Price"];
                price = price.Replace('.', ',');
                decimal originalPrice = 0;
                originalPrice    = decimal.Round(Convert.ToDecimal(price) * 1, 2);
                book.Name        = editedBook.Book.Name;
                book.Slug        = editedBook.Book.Slug;
                book.Count       = editedBook.Book.Count;
                book.Price       = originalPrice;
                book.Description = editedBook.Book.Description;
                string authorsList = Request.Form["authors"];
                if (authorsList == null)
                {
                    ModelState.AddModelError("", "Zəhmət olmasa yazar seçin");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                List <BookAuthor> bookAuthors = new List <BookAuthor>();
                string[]          authorArr   = authorsList.Split(",");
                List <int>        authorIds   = new List <int>();
                foreach (string authorId in authorArr)
                {
                    authorIds.Add(int.Parse(authorId));
                }

                foreach (int authorId in authorIds)
                {
                    bookAuthors.Add(new BookAuthor
                    {
                        BookId   = book.Id,
                        AuthorId = authorId
                    });
                }

                string categoryList = Request.Form["categories"];
                if (categoryList == null)
                {
                    ModelState.AddModelError("", "Zəhmət olmasa kateqoriya seçin");
                    List <Author>    authors    = _db.Authors.ToList();
                    List <Category>  categories = _db.Categories.ToList();
                    List <Publisher> publishers = _db.Publishers.ToList();
                    BookVM           model      = new BookVM
                    {
                        Book       = book,
                        Authors    = authors,
                        Categories = categories,
                        Publishers = publishers
                    };
                    return(View(model));
                }
                List <BookCategory> bookCategories = new List <BookCategory>();
                string[]            categoryArr    = categoryList.Split(",");
                List <int>          categoryIds    = new List <int>();
                foreach (string categoryId in categoryArr)
                {
                    categoryIds.Add(int.Parse(categoryId));
                }

                foreach (int categoryId in categoryIds)
                {
                    bookCategories.Add(new BookCategory
                    {
                        BookId     = book.Id,
                        CategoryId = categoryId
                    });
                }
                BookFeature bookFeature = new BookFeature
                {
                    PublishingPlace    = editedBook.Book.BookFeature.PublishingPlace,
                    PublishingDate     = editedBook.Book.BookFeature.PublishingDate,
                    PublishingLanguage = editedBook.Book.BookFeature.PublishingLanguage,
                    OriginalLanguage   = editedBook.Book.BookFeature.OriginalLanguage,
                    Translator         = editedBook.Book.BookFeature.Translator
                };
                Publisher oldPublisher = new Publisher();
                Publisher newPublisher = new Publisher();
                string    publisherId  = Request.Form["publishers"];
                if (book.PublisherId != int.Parse(publisherId))
                {
                    oldPublisher = _db.Publishers.FirstOrDefault(p => p.Id == book.PublisherId);
                    oldPublisher.BookCount--;
                    newPublisher = _db.Publishers.FirstOrDefault(p => p.Id == int.Parse(publisherId));
                    newPublisher.BookCount++;
                    book.PublisherId = newPublisher.Id;
                }
                book.BookAuthors    = bookAuthors;
                book.BookCategories = bookCategories;
                book.BookFeature    = bookFeature;
                await _db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
        }