예제 #1
0
        public IActionResult AddNewBook(BookModel mv)
        {
            if (ModelState.IsValid)
            {
                if (mv.CoverPhoto != null)
                {
                    string fileName     = Guid.NewGuid().ToString() + "_" + mv.CoverPhoto.FileName;
                    string folder       = @"book\cover\" + fileName;
                    string serverFolder = Path.Combine(_host.WebRootPath, folder);

                    UploadFile(serverFolder, mv.CoverPhoto);
                    mv.FilePath = fileName;
                }
                if (mv.CoverPhotos != null)
                {
                    mv.Gallery = new List <GalleryModel>();
                    foreach (var item in mv.CoverPhotos)
                    {
                        string fileName     = Guid.NewGuid().ToString() + "_" + item.FileName;
                        string folder       = @"book\gallery\" + fileName;
                        string serverFolder = Path.Combine(_host.WebRootPath, folder);

                        UploadFile(serverFolder, item);

                        mv.Gallery.Add(new GalleryModel {
                            Name = fileName, URL = folder.Substring(0, folder.LastIndexOf(@"\"))
                        });
                    }
                }

                Book bk = mv.FromModel();
                bk.BookGalleries = new List <BookGallery>();
                mv.Gallery.ForEach(x => bk.BookGalleries.Add(new BookGallery
                {
                    BookId = bk.Id,
                    Name   = x.Name,
                    URL    = x.URL,
                    Id     = 0,
                    Book   = bk
                }));


                _repo.AddNewBook(bk);
                var savedToDB = _repo.SaveChanges();

                if (savedToDB && bk.Id > 0)
                {
                    return(RedirectToAction(nameof(AddNewBook), new { isSuccess = savedToDB, bid = bk.Id }));
                }
            }

            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                             .Where(y => y.Count > 0)
                             .ToList();
                var message = string.Join(" | ", ModelState.Values
                                          .SelectMany(v => v.Errors)
                                          .Select(e => e.ErrorMessage));
            }

            ViewBag.Languages = new SelectList(GetLanguages(),
                                               "Id",
                                               "Name"
                                               );
            ViewBag.IsSuccess = false; //this will be used when save is called
            ViewBag.Id        = 0;
            ModelState.AddModelError("", "this error is coming from controller");
            return(View());
        }