예제 #1
0
        // GET: Article
        public ActionResult Index()
        {
            var allArticles = repository.GetAll();
            List <ArticlePreview> articlePreviews = new List <ArticlePreview>();

            foreach (var article in allArticles)
            {
                var articlePreview = new ArticlePreview {
                    Article = article
                };
                articlePreviews.Add(articlePreview);
            }


            return(View(articlePreviews));
        }
예제 #2
0
        public async Task <IActionResult> UploadAtricleImage(ImageUploadRequest request)
        {
            return(await MethodWrapper(async (param) =>
            {
                if (param == null)
                {
                    return BadRequest();
                }

                if (!int.TryParse(param.Id, out int articleId) || !bool.TryParse(param.IsDefault, out bool isDefaultImage))
                {
                    return BadRequest();
                }

                string fileName = $"{param.Id}_{param.Image.FileName}";

                // путь к папке Files
                string path = $"/Images/{fileName}";

                if (System.IO.File.Exists(HostingEnvironment.WebRootPath + path))
                {
                    ModelState.AddModelError("error", "Картинка уже была загружена.");
                    return BadRequest(ModelState);
                }

                // сохраняем файл в папку Files в каталоге wwwroot
                using (var fileStream = new FileStream(HostingEnvironment.WebRootPath + path, FileMode.Create))
                {
                    await param.Image.CopyToAsync(fileStream);
                }

                TorImage file = new TorImage {
                    ArticleId = articleId, Name = param.Image.FileName, LocalPath = path, IsDefault = isDefaultImage
                };

                Context.Images.Add(file);

                await Context.SaveChangesAsync();

                file.ExternalPath = $"{Request.Scheme}://{Request.Host.Value}/api/images/{file.Id}";

                Context.Images.Update(file);

                await Context.SaveChangesAsync();

                if (isDefaultImage)
                {
                    ArticlePreview articlePreview = await Context.Previews.FirstOrDefaultAsync(pre => pre.ArticleID == articleId);

                    // if exist old default image- remove it
                    if (!string.IsNullOrEmpty(articlePreview.DefaultImagePath))
                    {
                        string oldDefaultStr = articlePreview.DefaultImagePath.Split('/').LastOrDefault();

                        TorImage image = await Context.Images.FirstOrDefaultAsync(pre => pre.Id == int.Parse(oldDefaultStr));

                        System.IO.File.Delete(HostingEnvironment.WebRootPath + image.LocalPath);

                        Context.Images.Remove(image);

                        await Context.SaveChangesAsync();
                    }

                    articlePreview.DefaultImagePath = file.ExternalPath;

                    Context.Update(articlePreview);

                    await Context.SaveChangesAsync();
                }

                return Ok();
            }, request));
        }