public ActionResult Gallery(AddGalleryViewModel model, HttpPostedFileBase imgUp, int id)
        {
            if (ModelState.IsValid)
            {
                if (imgUp != null && imgUp.IsImage())
                {
                    var gallery = new ProductGalleries
                    {
                        ProductId    = id,
                        GalleryTitle = model.GalleryTitle,
                        ImageName    = Guid.NewGuid() + Path.GetExtension(imgUp.FileName)
                    };

                    imgUp.SaveAs(Server.MapPath("/Images/ProductImages/" + gallery.ImageName));

                    var img = new ImageResizer();
                    img.Resize(Server.MapPath("/Images/ProductImages/" + gallery.ImageName),
                               Server.MapPath("/Images/ProductImages/Resized/" + gallery.ImageName));

                    db.ProductGalleriesRepository.Insert(gallery);
                    db.Save();
                    RedirectToAction("Gallery", new { id = id });
                }
                else
                {
                    return(Redirect("/Admin/Products/Gallery/" + id + "?img=error"));
                }
            }

            return(RedirectToAction("Gallery", new { id = id }));
        }
 public JsonResult AddGallery(AddGalleryViewModel viewModel)
 {
     try
     {
         _galleryService.Create(ModelMapper.ConvertToModel(viewModel));
         return(Json(true));
     }
     catch (Exception)
     {
         return(Json(false));
     }
 }
Beispiel #3
0
        public async Task <IActionResult> AddGallery(AddGalleryViewModel model)
        {
            if (ModelState.IsValid)
            {
                Gallery gallery = new Gallery()
                {
                    Id                 = Guid.NewGuid(),
                    GalleryTitle       = model.GalleryTitle,
                    GalleryDescription = model.GalleryDescription,
                    GalleryDate        = DateTime.Now
                };

                await websiteDB.Galleries.AddAsync(gallery);

                await websiteDB.SaveChangesAsync();

                return(RedirectToAction("Gallery", "Home", new { galleryId = gallery.Id }));
            }
            return(View(model));
        }
        public async Task <IActionResult> Add(AddGalleryViewModel model)
        {
            if (!await articleService.ExistsAsync(model.ArticleId))
            {
                TempData.AddErrorMessage("Invalid article.");
                return(RedirectToAction("Index", "Home"));
            }

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var galleryId = await galleryService.AddAsync(model.Name, model.PhotographerName, model.ArticleId);

            if (galleryId == 0)
            {
                TempData.AddErrorMessage("Save failed.");
                return(RedirectToAction("Index", "Home"));
            }

            return(RedirectToAction(nameof(AddPictures), galleryId));
        }
Beispiel #5
0
        public async Task <IActionResult> AddGallery(AddGalleryViewModel model, IFormFile previewImage)
        {
            // Проверяем, чтобы входящий файл был не NULL и имел допустимый размер в мегабайтах
            if (previewImage != null && previewImage.Length > 2097152)
            {
                ModelState.AddModelError("GalleryPreviewImage", $"Файл \"{previewImage.FileName}\" превышает установленный лимит 2MB.");
            }

            if (ModelState.IsValid)
            {
                // Если размер входного файла больше 0, заходим в тело условия
                if (previewImage != null && previewImage.Length > 0)
                {
                    // Создаем новый объект класса FileInfo из полученного изображения для дальнейшей обработки
                    FileInfo imgFile = new FileInfo(previewImage.FileName);
                    // Приводим расширение к нижнему регистру (если оно было в верхнем)
                    string imgExtension = imgFile.Extension.ToLower();
                    // Генерируем новое имя для файла
                    string newFileName = Guid.NewGuid() + imgExtension;
                    // Пути сохранения файла
                    string pathPreview = "/files/images/preview/" + newFileName; // уменьшенное изображение

                    // В операторе try/catch делаем уменьшенную копию изображения.
                    // Если входным файлом окажется не изображение, нас перекинет в блок CATCH и выведет сообщение об ошибке
                    try
                    {
                        // Создаем объект класса SixLabors.ImageSharp.Image и грузим в него полученное изображение
                        using (Image image = Image.Load(previewImage.OpenReadStream()))
                        {
                            // Создаем уменьшенную копию и обрезаем её
                            var clone = image.Clone(x => x.Resize(new ResizeOptions
                            {
                                Mode = ResizeMode.Crop,
                                Size = new Size(300, 200)
                            }));
                            // Сохраняем уменьшенную копию
                            await clone.SaveAsync(_appEnvironment.WebRootPath + pathPreview, new JpegEncoder { Quality = 50 });
                        }
                    }
                    // Если вдруг что-то пошло не так (например, на вход подало не картинку), то выводим сообщение об ошибке
                    catch
                    {
                        // Создаем сообщение об ошибке для вывода пользователю
                        ModelState.AddModelError("GalleryPreviewImage", $"Файл {previewImage.FileName} имеет неверный формат.");

                        // Возвращаем модель с сообщением об ошибке в представление
                        return(View(model));
                    }

                    Gallery gallery = new Gallery()
                    {
                        Id                  = Guid.NewGuid(),
                        GalleryTitle        = model.GalleryTitle,
                        GalleryDescription  = model.GalleryDescription,
                        GalleryDate         = DateTime.Now,
                        UserName            = User.Identity.Name,
                        GalleryPreviewImage = pathPreview
                    };

                    await _websiteDB.Galleries.AddAsync(gallery);

                    await _websiteDB.SaveChangesAsync();

                    return(RedirectToAction("Index", "Gallery"));
                }
                // Если не была выбрана картинка для превью, заходим в блок ELSE
                else
                {
                    Gallery gallery = new Gallery()
                    {
                        Id                 = Guid.NewGuid(),
                        GalleryTitle       = model.GalleryTitle,
                        GalleryDescription = model.GalleryDescription,
                        GalleryDate        = DateTime.Now,
                        UserName           = User.Identity.Name,
                        // Вбиваем картинку-заглушку
                        GalleryPreviewImage = "/files/images/preview/nopreview.jpg" // Хардкод. Потом обязательно заменить !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    };

                    await _websiteDB.Galleries.AddAsync(gallery);

                    await _websiteDB.SaveChangesAsync();

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

            // Возврат модели при неудачной валидации
            return(View(model));
        }