Esempio n. 1
0
        public async Task <IActionResult> Edit(int id, News news, IFormFile newsimage, List <IFormFile> newsgallery, string tags)
        {
            if (id != news.NewsId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var uploads = Path.Combine(_env.WebRootPath, "Upload\\NewsImages");
                    news.UserId = 1010;
                    //news.UserId = (await _userService.GetUserByIdentity(User.Identity.Name)).UserId;
                    //----------------------Edit News Image -----------------------
                    if (newsimage != null)
                    {
                        if (news.NewsImage != "no-photo.jpg")
                        {
                            if (System.IO.File.Exists(Path.Combine(uploads, news.NewsImage)))
                            {
                                System.IO.File.Delete(Path.Combine(uploads, news.NewsImage));
                            }
                            if (System.IO.File.Exists(Path.Combine(uploads, "thumbnail", news.NewsImage)))
                            {
                                System.IO.File.Delete(Path.Combine(uploads, "thumbnail", news.NewsImage));
                            }
                        }
                        news.NewsImage = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(newsimage.FileName);
                        using (var fileStream = new FileStream(Path.Combine(uploads, news.NewsImage), FileMode.Create))
                        {
                            await newsimage.CopyToAsync(fileStream);
                        }
                        //---------------------resize Images ----------------------
                        InsertShowImage.ImageResizer img = new InsertShowImage.ImageResizer(128);
                        img.Resize(Path.Combine(uploads, news.NewsImage), Path.Combine(uploads, "thumbnail", news.NewsImage));
                    }

                    //------------Edit Gallery Product --------------
                    List <NewsGallery> newsGalleries = new List <NewsGallery>();

                    foreach (var file in newsgallery)
                    {
                        string galleryname = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(file.FileName);
                        using (var fileStream = new FileStream(Path.Combine(uploads, galleryname), FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }

                        newsGalleries.Add(new NewsGallery()
                        {
                            NewsId    = news.NewsId,
                            ImageName = galleryname
                        });
                        //---------------------resize Images ----------------------
                        InsertShowImage.ImageResizer img = new InsertShowImage.ImageResizer(350);
                        img.Resize(Path.Combine(uploads, galleryname), Path.Combine(uploads, "thumbnail", galleryname));
                    }
                    await _newsGalleryService.Add(newsGalleries);

                    //------------Edit TAgs ------------------
                    await _newsTagService.RemoveByNewsId(news.NewsId);

                    if (!string.IsNullOrEmpty(tags))
                    {
                        List <NewsTag> newsTags = new List <NewsTag>();
                        foreach (string tag in tags.Split('-'))
                        {
                            newsTags.Add(new NewsTag()
                            {
                                NewsId    = news.NewsId,
                                TagsTitle = tag.Trim()
                            });
                        }
                        await _newsTagService.Add(newsTags);
                    }

                    await _newsService.Edit(news);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!await _newsService.NewsExistence(news.NewsId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(news));
        }