public IActionResult Create() { var categoris = uw.Context.Categories.Where(c => c.ParentCategoryID == null).Select(c => new TreeViewCategory { id = c.CategoryID, title = c.CategoryName }).ToList(); foreach (var item in categoris) { uw.BookRepository.BindSubCategories(item); } ViewBag.LanguageID = new SelectList(uw.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(uw.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(uw.BaseRepository <Author>().FindAll().Select(c => new AuthorList { AuthorID = c.AuthorID, NameFamily = c.FirstName + " " + c.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(uw.BaseRepository <Translator>().FindAll().Select(c => new TranslatorList { TranslatorID = c.TranslatorID, NameFamily = c.Name + " " + c.Family }), "TranslatorID", "NameFamily"); BooksSubCategoriesViewModel subCategoriesVM = new BooksSubCategoriesViewModel(uw.BookRepository.GetAllCategories(), null); BooksCreateEditViewModel viewModel = new BooksCreateEditViewModel(subCategoriesVM); return(View(viewModel)); }
public async Task <ApiResult> CreateBook(BooksCreateEditViewModel ViewModel) { if (await _unitOfWork.BooksRepository.CreateBookAsync(ViewModel)) { return(Ok()); } else { return(BadRequest("در انجام عملیات خطایی رخ داده است")); } }
public async Task <ApiResult> EditBookAsync(BooksCreateEditViewModel ViewModel) { var result = await _unitOfWork.BooksRepository.EditBookAsync(ViewModel); if (result.IsSuccess == true) { return(Ok()); } else { return(BadRequest("در انجام عملیات خطایی زخ داده است")); } }
public async Task <IActionResult> Create(BooksCreateEditViewModel ViewModel) { if (ModelState.IsValid) { UploadFileResult result = new UploadFileResult(); string NewFileName = null; if (ViewModel.File != null) { NewFileName = _unitofwork.BooksRepository.CheckFileName(ViewModel.File.FileName); var path = $"{_environment.WebRootPath}/BookFiles/{NewFileName}"; result = await _unitofwork.BooksRepository.UploadFileAsync(ViewModel.File, path); } if (result.IsSuccess == true || result.IsSuccess == null) { ViewModel.FileName = NewFileName; if (await _unitofwork.BooksRepository.CreateBookAsync(ViewModel)) { return(RedirectToAction("Index")); } else { ViewBag.Error = "در انجام عملیات خطایی رخ داده است."; } } else { foreach (var item in result.Errors) { ModelState.AddModelError("", item); } } } ViewBag.LanguageID = new SelectList(_unitofwork.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_unitofwork.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_unitofwork.BaseRepository <Author>().FindAll().Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_unitofwork.BaseRepository <Translator>().FindAll().Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); //ViewModel.SubCategoriesVM = new BooksSubcategoriesViewModel(_repository.GetAllCategories(), ViewModel.CategoryID); ViewModel.SubCategoriesVM = new BooksSubcategoriesViewModel(_unitofwork.BooksRepository.GetAllCategories(), ViewModel.CategoryID); return(View(ViewModel)); }
public IActionResult Create() { ViewBag.LanguageID = new SelectList(_UW.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_UW.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_UW.BaseRepository <Author>().FindAll().Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_UW.BaseRepository <Translator>().FindAll().Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); BooksSubCategoriesViewModel SubCategoriesVM = new BooksSubCategoriesViewModel(_UW.BooksRepository.GetAllCategories(), null); BooksCreateEditViewModel ViewModel = new BooksCreateEditViewModel(SubCategoriesVM); return(View(ViewModel)); }
public async Task <IActionResult> Create(BooksCreateEditViewModel ViewModel) { if (ModelState.IsValid) { List <Book_Category> categories = new List <Book_Category>(); if (ViewModel.CategoryID != null) { categories = ViewModel.CategoryID.Select(a => new Book_Category { CategoryID = a }).ToList(); } Book book = new Book() { //Delete = false, LanguageID = ViewModel.LanguageID, PublishYear = ViewModel.PublishYear, PublisherID = ViewModel.PublisherID, book_Categories = categories, }; await _context.Books.AddAsync(book); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } else { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); return(View(ViewModel)); } }
public async Task <IActionResult> Edit(BooksCreateEditViewModel viewModel) { //ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); //ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); //ViewBag.AuthorID = new SelectList(_context.Authors.Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); //ViewBag.TranslatorID = new SelectList(_context.Translator.Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); ViewBag.LanguageID = new SelectList(_unitofwork.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_unitofwork.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_unitofwork.BaseRepository <Author>().FindAll().Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_unitofwork.BaseRepository <Translator>().FindAll().Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); //viewModel.SubCategoriesVM = new BooksSubcategoriesViewModel(_repository.GetAllCategories(), viewModel.CategoryID); viewModel.SubCategoriesVM = new BooksSubcategoriesViewModel(_unitofwork.BooksRepository.GetAllCategories(), viewModel.CategoryID); if (ModelState.IsValid) { UploadFileResult result = new UploadFileResult(); string NewFileName = viewModel.FileName; string path; if (viewModel.File != null) { NewFileName = _unitofwork.BooksRepository.CheckFileName(viewModel.File.FileName); path = $"{_environment.WebRootPath}/BookFiles/{NewFileName}"; result = await _unitofwork.BooksRepository.UploadFileAsync(viewModel.File, path); } if (result.IsSuccess == true || result.IsSuccess == null) { if (result.IsSuccess == true) { path = $"{_environment.WebRootPath}/BookFiles/{viewModel.FileName}"; if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); } } viewModel.FileName = NewFileName; var operationResult = await _unitofwork.BooksRepository.EditBookAsync(viewModel); if (operationResult.IsSuccess == true) { ViewBag.MsgSuccess = "ذخیره تغییرات با موفقیت انجام شد."; return(View(viewModel)); } else { foreach (var item in operationResult.Errors) { ModelState.AddModelError("", item); } return(View(viewModel)); } } else { foreach (var item in result.Errors) { ModelState.AddModelError("", item); } return(View(viewModel)); } } else { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است."; return(View(viewModel)); } }
public async Task <EntityOperationResult> EditBookAsync(BooksCreateEditViewModel ViewModel) { try { var Book = await _UW.BaseRepository <Book>().FindByIDAsync(ViewModel.BookID); if (Book != null) { DateTime?PublishDate; if (ViewModel.IsPublish == true && Book.IsPublish == false) { PublishDate = DateTime.Now; } else if (Book.IsPublish == true && ViewModel.IsPublish == false) { PublishDate = null; } else { PublishDate = Book.PublishDate; } Book.BookID = ViewModel.BookID; Book.BookID = ViewModel.BookID; Book.Title = ViewModel.Title; Book.ISBN = ViewModel.ISBN; Book.NumOfPages = ViewModel.NumOfPages; Book.Price = ViewModel.Price; Book.Stock = ViewModel.Stock; Book.IsPublish = ViewModel.IsPublish; Book.LanguageID = ViewModel.LanguageID; Book.PublisherID = ViewModel.PublisherID; Book.PublishYear = ViewModel.PublishYear; Book.Summary = ViewModel.Summary; Book.Weight = ViewModel.Weight; Book.PublishDate = PublishDate; Book.File = ViewModel.FileName; Book.Delete = false; var RecentAuthors = (from a in _UW._Context.Author_Books where (a.BookID == ViewModel.BookID) select a.AuthorID).ToArray(); var RecentTranslators = (from a in _UW._Context.Book_Translators where (a.BookID == ViewModel.BookID) select a.TranslatorID).ToArray(); var RecentCategories = (from c in _UW._Context.Book_Categories where (c.BookID == ViewModel.BookID) select c.CategoryID).ToArray(); if (ViewModel.TranslatorID == null) { ViewModel.TranslatorID = new int[] { } } ; if (ViewModel.CategoryID == null) { ViewModel.CategoryID = new int[] { } } ; var DeletedAuthors = RecentAuthors.Except(ViewModel.AuthorID); var DeletedTranslators = RecentTranslators.Except(ViewModel.TranslatorID); var DeletedCategories = RecentCategories.Except(ViewModel.CategoryID); var AddedAuthors = ViewModel.AuthorID.Except(RecentAuthors); var AddedTranslators = ViewModel.TranslatorID.Except(RecentTranslators); var AddedCategories = ViewModel.CategoryID.Except(RecentCategories); if (DeletedAuthors.Count() != 0) { _UW.BaseRepository <Author_Book>().DeleteRange(DeletedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedTranslators.Count() != 0) { _UW.BaseRepository <Book_Translator>().DeleteRange(DeletedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedCategories.Count() != 0) { _UW.BaseRepository <Book_Category>().DeleteRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedAuthors.Count() != 0) { await _UW.BaseRepository <Author_Book>().CreateRangeAsync(AddedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedTranslators.Count() != 0) { await _UW.BaseRepository <Book_Translator>().CreateRangeAsync(AddedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { await _UW.BaseRepository <Book_Category>().CreateRangeAsync(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } await _UW.Commit(); return(new EntityOperationResult(true, null)); } else { return(new EntityOperationResult(false, new List <string>() { "سندی یافت نشد !!!" })); } } catch (Exception exp) { //return new EntityOperationResult(false, new List<string>() { exp.Message }); return(new EntityOperationResult(false, new List <string>() { "در انجام عملیات خطایی رخ داده است." })); } }
public async Task <bool> CreateBookAsync(BooksCreateEditViewModel ViewModel) { try { byte[] Image = null; if (!string.IsNullOrWhiteSpace(ViewModel.ImageBase64)) { Image = Convert.FromBase64String(ViewModel.ImageBase64); } List <Book_Translator> translators = new List <Book_Translator>(); List <Book_Category> categories = new List <Book_Category>(); if (ViewModel.TranslatorID != null) { translators = ViewModel.TranslatorID.Select(a => new Book_Translator { TranslatorID = a }).ToList(); } if (ViewModel.CategoryID != null) { categories = ViewModel.CategoryID.Select(a => new Book_Category { CategoryID = a }).ToList(); } DateTime?PublishDate = null; if (ViewModel.IsPublish == true) { PublishDate = DateTime.Now; } Book book = new Book() { ISBN = ViewModel.ISBN, IsPublish = ViewModel.IsPublish, NumOfPages = ViewModel.NumOfPages, Stock = ViewModel.Stock, Price = ViewModel.Price, LanguageID = ViewModel.LanguageID, Summary = ViewModel.Summary, Title = ViewModel.Title, Image = Image, PublishYear = ViewModel.PublishYear, PublishDate = PublishDate, Weight = ViewModel.Weight, PublisherID = ViewModel.PublisherID, Author_Books = ViewModel.AuthorID.Select(a => new Author_Book { AuthorID = a }).ToList(), book_Tranlators = translators, book_Categories = categories, File = ViewModel.FileName, }; if (ViewModel.Image != null) { using (var memorySteam = new MemoryStream()) { string FileExtension = Path.GetExtension(ViewModel.Image.FileName); await ViewModel.Image.CopyToAsync(memorySteam); var types = FileExtentions.FileType.Image; bool result = FileExtentions.IsValidFile(memorySteam.ToArray(), types, FileExtension.Replace('.', ' ')); if (result) { book.Image = memorySteam.ToArray(); } } } await _UW.BaseRepository <Book>().CreateAsync(book); await _UW.Commit(); return(true); } catch { return(false); } }
public async Task <IActionResult> Edit(BooksCreateEditViewModel viewModel) { ViewBag.LanguageID = new SelectList(uw.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(uw.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(uw.BaseRepository <Author>().FindAll().Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(uw.BaseRepository <Translator>().FindAll().Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); viewModel.SubCategoriesVM = new BooksSubCategoriesViewModel(uw.BookRepository.GetAllCategories(), viewModel.CategoryID); if (!ModelState.IsValid) { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است بعد از اصلاح اطلاعات دوباره تلاش کنید"; return(View(viewModel)); } try { DateTime?publishDate; if (viewModel.IsPublish == true && viewModel.RecentIsPublish == false) { publishDate = DateTime.Now; } else if (viewModel.RecentIsPublish == true && viewModel.IsPublish == false) { publishDate = null; } else { publishDate = viewModel.PublishDate; } Book book = new Book { BookID = viewModel.BookID, Title = viewModel.Title, ISBN = viewModel.ISBN, NumOfPages = viewModel.NumOfPages, Price = viewModel.Price, Stock = viewModel.Stock, IsPublished = viewModel.IsPublish, LanguageID = viewModel.LanguageID, PublisherID = viewModel.PublisherID, PublishYear = viewModel.PublishYear, Summary = viewModel.Summary, Weight = viewModel.Weight, PublishDate = publishDate, IsDeleted = false, }; repo.Update(book); var RecentAuthors = await uw.Context.Author_Books.Where(c => c.BookID == viewModel.BookID).Select(c => c.AuthorID).ToArrayAsync(); var RecentTranslators = await uw.Context.Book_Translators.Where(c => c.BookID == viewModel.BookID).Select(c => c.TranslatorID).ToArrayAsync(); var RecentCategories = await uw.Context.Book_Categories.Where(c => c.BookID == viewModel.BookID).Select(c => c.CategoryID).ToArrayAsync(); var DeletedAuthors = RecentAuthors.Except(viewModel.AuthorID); var DeletedTranslators = RecentTranslators.Except(viewModel.TranslatorID); var DeletedCategories = RecentCategories.Except(viewModel.CategoryID); var AddedAuthors = viewModel.AuthorID.Except(RecentAuthors); var AddedTranslators = viewModel.TranslatorID.Except(RecentTranslators); var AddedCategories = viewModel.CategoryID.Except(RecentCategories); if (DeletedAuthors.Count() != 0) { uw.BaseRepository <Author_Book>().DeleteRange(DeletedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = viewModel.BookID }).ToList()); } if (DeletedTranslators.Count() != 0) { uw.BaseRepository <Book_Translator>().DeleteRange(DeletedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = viewModel.BookID }).ToList()); } if (DeletedCategories.Count() != 0) { uw.BaseRepository <Book_Category>().DeleteRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = viewModel.BookID }).ToList()); } if (AddedAuthors.Count() != 0) { await uw.BaseRepository <Author_Book>().CreateRange(AddedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = viewModel.BookID }).ToList()); } if (AddedTranslators.Count() != 0) { await uw.BaseRepository <Book_Translator>().CreateRange(AddedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = viewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { await uw.BaseRepository <Book_Category>().CreateRange(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = viewModel.BookID }).ToList()); } await uw.Commit(); ViewBag.MsgSuccess = "ویرایش اطلاعات با موقیت انجام شد"; return(View(viewModel)); } catch (Exception) { ViewBag.MsgFailed = "به هنگام ویرایش اطلاعات مشکلی به وجود آمد لطفا دوباره تلاش کنید"; return(View(viewModel)); } }
public async Task <IActionResult> Create(BooksCreateEditViewModel ViewModel) { if (ModelState.IsValid) { List <Book_Translator> translators = new List <Book_Translator>(); List <Book_Category> categories = new List <Book_Category>(); if (ViewModel.TranslatorID != null) { translators = ViewModel.TranslatorID.Select(a => new Book_Translator { TranslatorID = a }).ToList(); } if (ViewModel.CategoryID != null) { categories = ViewModel.CategoryID.Select(a => new Book_Category { CategoryID = a }).ToList(); } DateTime?PublishDate = null; var trnasAction = await uw.Context.Database.BeginTransactionAsync(); try { if (ViewModel.IsPublish == true) { PublishDate = DateTime.Now; } Book book = new Book() { IsDeleted = false, ISBN = ViewModel.ISBN, IsPublished = ViewModel.IsPublish, NumOfPages = ViewModel.NumOfPages, Stock = ViewModel.Stock, Price = ViewModel.Price, LanguageID = ViewModel.LanguageID, Summary = ViewModel.Summary, Title = ViewModel.Title, PublishYear = ViewModel.PublishYear, PublishDate = PublishDate, Weight = ViewModel.Weight, PublisherID = ViewModel.PublisherID, Author_Books = ViewModel.AuthorID.Select(a => new Author_Book { AuthorID = a }).ToList(), Book_Translators = translators, Book_Categories = categories }; await repo.Create(book); await uw.Commit(); trnasAction.Commit(); return(RedirectToAction("Index")); } catch (Exception) { return(RedirectToAction("Index", new { msg = "failed" })); } } else { ViewBag.LanguageID = new SelectList(uw.BaseRepository <Language>().FindAll(), "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(uw.BaseRepository <Publisher>().FindAll(), "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(uw.BaseRepository <Author>().FindAll().Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(uw.BaseRepository <Translator>().FindAll().Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); ViewModel.SubCategoriesVM = new BooksSubCategoriesViewModel(uw.BookRepository.GetAllCategories(), ViewModel.CategoryID); return(View(ViewModel)); } }
public async Task <IActionResult> Create(BooksCreateEditViewModel ViewModel) { if (ModelState.IsValid) { List <Book_Translator> translators = new List <Book_Translator>(); List <Book_Category> categories = new List <Book_Category>(); if (ViewModel.TranslatorID != null) { translators = ViewModel.TranslatorID.Select(a => new Book_Translator { TranslatorID = a }).ToList(); } if (ViewModel.CategoryID != null) { categories = ViewModel.CategoryID.Select(a => new Book_Category { CategoryID = a }).ToList(); } DateTime?PublishDate = null; if (ViewModel.IsPublish == true) { PublishDate = DateTime.Now; } Book book = new Book() { //Delete = false, ISBN = ViewModel.ISBN, IsPublish = ViewModel.IsPublish, NumOfPages = ViewModel.NumOfPages, Stock = ViewModel.Stock, Price = ViewModel.Price, LanguageID = ViewModel.LanguageID, Summary = ViewModel.Summary, Title = ViewModel.Title, PublishYear = ViewModel.PublishYear, PublishDate = PublishDate, Weight = ViewModel.Weight, PublisherID = ViewModel.PublisherID, Author_Books = ViewModel.AuthorID.Select(a => new Author_Book { AuthorID = a }).ToList(), book_Tranlators = translators, book_Categories = categories, }; await _context.Books.AddAsync(book); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } else { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_context.Authors.Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_context.Translator.Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); ViewModel.Categories = _repository.GetAllCategories(); return(View(ViewModel)); } }
public async Task <IActionResult> Edit(BooksCreateEditViewModel ViewModel) { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); ViewBag.AuthorID = new SelectList(_context.Authors.Select(t => new AuthorList { AuthorID = t.AuthorID, NameFamily = t.FirstName + " " + t.LastName }), "AuthorID", "NameFamily"); ViewBag.TranslatorID = new SelectList(_context.Translator.Select(t => new TranslatorList { TranslatorID = t.TranslatorID, NameFamily = t.Name + " " + t.Family }), "TranslatorID", "NameFamily"); ViewModel.SubCategoriesVM = new BooksSubCategoriesViewModel(_repository.GetAllCategories(), ViewModel.CategoryID); if (ModelState.IsValid) { try { DateTime?PublishDate; if (ViewModel.IsPublish == true && ViewModel.RecentIsPublish == false) { PublishDate = DateTime.Now; } else if (ViewModel.RecentIsPublish == true && ViewModel.IsPublish == false) { PublishDate = null; } else { PublishDate = ViewModel.PublishDate; } Book book = new Book() { BookID = ViewModel.BookID, Title = ViewModel.Title, ISBN = ViewModel.ISBN, NumOfPages = ViewModel.NumOfPages, Price = ViewModel.Price, Stock = ViewModel.Stock, IsPublish = ViewModel.IsPublish, LanguageID = ViewModel.LanguageID, PublisherID = ViewModel.PublisherID, PublishYear = ViewModel.PublishYear, Summary = ViewModel.Summary, Weight = ViewModel.Weight, PublishDate = PublishDate, Delete = false, }; _context.Update(book); var RecentAuthors = (from a in _context.Author_Books where (a.BookID == ViewModel.BookID) select a.AuthorID).ToArray(); var RecentTranslators = (from a in _context.Book_Translators where (a.BookID == ViewModel.BookID) select a.TranslatorID).ToArray(); var RecentCategories = (from c in _context.Book_Categories where (c.BookID == ViewModel.BookID) select c.CategoryID).ToArray(); var DeletedAuthors = RecentAuthors.Except(ViewModel.AuthorID); var DeletedTranslators = RecentTranslators.Except(ViewModel.TranslatorID); var DeletedCategories = RecentCategories.Except(ViewModel.CategoryID); var AddedAuthors = ViewModel.AuthorID.Except(RecentAuthors); var AddedTranslators = ViewModel.TranslatorID.Except(RecentTranslators); var AddedCategories = ViewModel.CategoryID.Except(RecentCategories); if (DeletedAuthors.Count() != 0) { _context.RemoveRange(DeletedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedTranslators.Count() != 0) { _context.RemoveRange(DeletedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (DeletedCategories.Count() != 0) { _context.RemoveRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedAuthors.Count() != 0) { _context.AddRange(AddedAuthors.Select(a => new Author_Book { AuthorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedTranslators.Count() != 0) { _context.AddRange(AddedTranslators.Select(a => new Book_Translator { TranslatorID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { _context.AddRange(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } await _context.SaveChangesAsync(); ViewBag.MsgSuccess = "ذخیره تغییرات با موفقیت انجام شد."; return(View(ViewModel)); } catch { ViewBag.MsgFailed = "در ذخیره تغییرات خطایی رخ داده است."; return(View(ViewModel)); } } else { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است."; return(View(ViewModel)); } }
public async Task <IActionResult> Edit(BooksCreateEditViewModel ViewModel) { ViewBag.LanguageID = new SelectList(_context.Languages, "LanguageID", "LanguageName"); ViewBag.PublisherID = new SelectList(_context.Publishers, "PublisherID", "PublisherName"); if (ModelState.IsValid) { try { DateTime?PublishDate; if (ViewModel.IsPublish == true && ViewModel.RecentIsPublish == false) { PublishDate = DateTime.Now; } else if (ViewModel.RecentIsPublish == true && ViewModel.IsPublish == false) { PublishDate = null; } else { PublishDate = ViewModel.PublishDate; } Book book = new Book() { BookID = ViewModel.BookID, LanguageID = ViewModel.LanguageID, PublisherID = ViewModel.PublisherID, PublishYear = ViewModel.PublishYear, }; _context.Update(book); var RecentCategories = (from c in _context.Book_Categories where (c.BookID == ViewModel.BookID) select c.CategoryID).ToArray(); var DeletedCategories = RecentCategories.Except(ViewModel.CategoryID); var AddedCategories = ViewModel.CategoryID.Except(RecentCategories); if (DeletedCategories.Count() != 0) { _context.RemoveRange(DeletedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } if (AddedCategories.Count() != 0) { _context.AddRange(AddedCategories.Select(a => new Book_Category { CategoryID = a, BookID = ViewModel.BookID }).ToList()); } await _context.SaveChangesAsync(); ViewBag.MsgSuccess = "ذخیره تغییرات با موفقیت انجام شد."; return(View(ViewModel)); } catch { ViewBag.MsgFailed = "در ذخیره تغییرات خطایی رخ داده است."; return(View(ViewModel)); } } else { ViewBag.MsgFailed = "اطلاعات فرم نامعتبر است."; return(View(ViewModel)); } }