public ActionResult Create(CreateProductViewModel viewModel, HttpPostedFileBase mainImage, IEnumerable <HttpPostedFileBase> images) { if (ModelState.IsValid) { var product = new Product(); product.Code = viewModel.Code; product.Name = viewModel.Name; product.Description = viewModel.Description; product.Price = viewModel.Price; product.Created_at = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); db.Products.Add(product); var imagesToDownload = new List <HttpPostedFileBase>(); if (mainImage != null) { string relativePathToImage = Helper.GetRelativePathForResource(mainImage.FileName); ProductImage productMainImage = Factories.ProductImageFactory.Create(product.Id, relativePathToImage, true); db.ProductImages.Add(productMainImage); imagesToDownload.Add(mainImage); } foreach (var image in images.Where(x => x != null)) { string relativePathToImage = Helper.GetRelativePathForResource(image.FileName); ProductImage productImage = Factories.ProductImageFactory.Create(product.Id, relativePathToImage, false); db.ProductImages.Add(productImage); imagesToDownload.Add(image); } //sukuriam dar viena sarasa, kad klaidos atveju zinotume, kokias nuotraukas reikia istrint var downloadedImages = new List <HttpPostedFileBase>(); try { foreach (var img in imagesToDownload) { FileWorker.DownloadImage(img); downloadedImages.Add(img); } } catch (FileDownloadException) { foreach (var img in downloadedImages) { string relativePathToImage = Helper.GetRelativePathForResource(img.FileName); FileWorker.DeleteFile(relativePathToImage); } ModelState.AddModelError("Error", "Klaida išsaugant paveikslėlį."); return(View(viewModel)); } try { db.SaveChanges(); } catch (System.Data.Entity.Infrastructure.DbUpdateException) { ModelState.AddModelError("Error", "Prekė su tokiu kodu jau egzistuoja."); return(View(viewModel)); } catch (Exception ex) { ModelState.AddModelError("Error", ex); return(View(viewModel)); } return(RedirectToAction("GetProductsListForAdmin", new { isPartial = false, query = "", currentPage = 1 })); } return(View(viewModel)); }