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));
        }
Esempio n. 2
0
        public async Task <ApiResult> CreateBook(BooksCreateEditViewModel ViewModel)
        {
            if (await _unitOfWork.BooksRepository.CreateBookAsync(ViewModel))
            {
                return(Ok());
            }

            else
            {
                return(BadRequest("در انجام عملیات خطایی رخ داده است"));
            }
        }
Esempio n. 3
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 8
0
        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>()
                {
                    "در انجام عملیات خطایی رخ داده است."
                }));
            }
        }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 10
0
        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));
            }
        }
Esempio n. 11
0
        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));
            }
        }
Esempio n. 14
0
        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));
            }
        }