public async Task <ActionResult> Edit(BannerPhotographEditViewModel model)
        {
            ModelState.Remove("Image");

            if (ModelState.IsValid)
            {
                db.Update(model.Banner);
                db.ExcludeFromUpdate(model.Banner, b => new { b.UriPath });

                if (model.Image != null)
                {
                    var fileName = db.GetValueFromDb(model.Banner, b => b.UriPath);

                    FileUploadHelper.SaveImage(
                        model.Image.InputStream,
                        1024,
                        500,
                        Path.Combine(Server.MapPath("~/Public/Banners"), fileName),
                        FitMode.Crop);
                }

                foreach (var item in model.Banner.Translations)
                {
                    db.UpdateTranslation(item);
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Edit(NewsItemViewModel model)
        {
            if (ModelState.IsValid)
            {
                db.Update(model.NewsItem);

                if (model.HeaderImageUpload != null)
                {
                    var fileName =
                        db.GetValueFromDb(model.NewsItem, i => i.HeaderImage) ??
                        Guid.NewGuid().ToString();

                    var path = Server.MapPath("~/Public/News/");
                    Directory.CreateDirectory(path);

                    FileUploadHelper.GenerateVersions(model.HeaderImageUpload.InputStream, path + fileName);

                    model.NewsItem.HeaderImage = fileName;
                }
                else
                {
                    db.ExcludeFromUpdate(model.NewsItem, i => new { i.HeaderImage });
                }

                foreach (var t in model.NewsItem.Translations)
                {
                    db.UpdateTranslation(t);
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(GenerateViewModel(model.NewsItem)));
        }
        public async Task <ActionResult> Edit(ImageEditViewModel model)
        {
            if (DoesCodeAlreadyExist(model.Image))
            {
                ModelState.AddModelError("Image.ImageCode", ImageStrings.CodeAlreadyExists);
            }

            if (ModelState.IsValid)
            {
                // "Force-load" the image and the keywords.
                await db.ForceLoadAsync(model.Image, i => i.Keywords);

                db.Update(model.Image);

                model.Image.Keywords = db.Set <Keyword>()
                                       .Where(k => model.KeywordIds.Contains(k.Id)).ToList();

                foreach (var t in model.Image.Translations)
                {
                    db.UpdateTranslation(t);
                }

                if (model.ImageUpload != null)
                {
                    var fileName =
                        db.GetValueFromDb(model.Image, i => i.ImageUrl) ??
                        Guid.NewGuid().ToString();

                    var path = Server.MapPath("~/Public/Images/");
                    Directory.CreateDirectory(path);

                    FileUploadHelper.GenerateVersions(model.ImageUpload.InputStream, path + fileName);

                    model.Image.ImageUrl = fileName;
                }
                else
                {
                    db.ExcludeFromUpdate(model.Image, i => new { i.ImageUrl });
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            model.PopulateDropDownLists(db.Set <Document>(), db.Set <Classification>(), db.Set <Keyword>());

            return(View(model));
        }
        public async Task <ActionResult> Edit(AuthorEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                db.Update(model.Author);

                if (model.ImageUpload != null)
                {
                    var logo = db.GetValueFromDb(model.Author, c => c.PictureFileName);

                    if (logo == null)
                    {
                        model.Author.PictureFileName =
                            Guid.NewGuid().ToString() + ".jpg";

                        logo = model.Author.PictureFileName;
                    }

                    FileUploadHelper.SaveImage(model.ImageUpload.InputStream,
                                               400, 400,
                                               Server.MapPath("~/Public/Authors/") + logo,
                                               FitMode.Crop);
                }
                else
                {
                    db.ExcludeFromUpdate(model.Author, c => new { c.PictureFileName });
                }



                // Update each translation.
                foreach (var t in model.Author.Translations)
                {
                    db.UpdateTranslation(t);
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
        public async Task <ActionResult> Edit(CollectionEditViewModel model)
        {
            if (DoesCodeAlreadyExist(model.Collection))
            {
                ModelState.AddModelError("Collection.CatalogCode", CollectionStrings.Validation_CodeAlreadyExists);
            }

            if (ModelState.IsValid)
            {
                // Force-update the collection's author list.
                await db.ForceLoadAsync(model.Collection, c => c.Authors);

                model.Collection.Authors = db.Set <Author>()
                                           .Where(a => model.AuthorIds.Contains(a.Id)).ToList();

                foreach (var t in model.Collection.Translations)
                {
                    db.UpdateTranslation(t);
                }

                // Update the logo if a new one is supplied. Don't allow property value changes if
                // the logo doesn't exist.
                if (model.Logo != null)
                {
                    var logo = db.GetValueFromDb(model.Collection, c => c.LogoLocation);

                    if (logo == null)
                    {
                        model.Collection.LogoLocation =
                            Guid.NewGuid().ToString() + ".jpg";

                        logo = model.Collection.LogoLocation;
                    }

                    FileUploadHelper.SaveImage(model.Logo.InputStream,
                                               400, 400,
                                               Server.MapPath("~/Public/Collections/") + logo,
                                               FitMode.Crop);
                }
                else
                {
                    db.ExcludeFromUpdate(model.Collection, c => new { c.LogoLocation });
                }

                db.Update(model.Collection);

                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            model.AvailableAuthors = db.Set <Author>()
                                     .Select(a => new SelectListItem
            {
                Value    = a.Id.ToString(),
                Text     = a.LastName + ", " + a.FirstName,
                Selected = model.AuthorIds.Contains(a.Id)
            })
                                     .ToList();

            return(View(model));
        }