Example #1
0
        public IActionResult ArticleEdit(ArticleForm articleForm)
        {
            ModelState.Remove("Image.ID");
            ViewBag.Users = _UserRepo.GetAll();
            ViewBag.Tags  = _TagRepo.GetAll();

            var zeroId = articleForm.ID == 0;

            if (ModelState.IsValid)
            {
                Article article;
                if (articleForm.ID != 0)
                {
                    article = _ArticleRepo.GetByID(articleForm.ID);
                }
                else
                {
                    article = new Article {
                        ID = articleForm.ID
                    };
                    article.Created = DateTime.UtcNow;
                }

                var passed = true;
                try {
                    _ArticleRepo.Update(articleForm.ToModel(article, ViewBag.Tags));
                }
                catch (FormatException) {
                    ViewBag.Alert = "Couldn't parse";
                    passed        = false;
                }

                if (passed)
                {
                    _ArticleRepo.Save();
                    ViewBag.Alert = "Saved!";
                    articleForm   = ArticleForm.FromModel(article);
                }
            }

            if (Request.Form.Files["cover-image"] is not null && articleForm.ID != 0)
            {
                var article = _ArticleRepo.GetByID(articleForm.ID);

                article.Image = new Image {
                    ContentType = Request.Form.Files["cover-image"].ContentType,
                    Data        = new byte[Request.Form.Files["cover-image"].Length]
                };

                Request.Form.Files["cover-image"].OpenReadStream().Read(article.Image.Data, 0, article.Image.Data.Length);

                articleForm.Image.ToModel(article.Image);

                _ArticleRepo.Update(article);
                _ArticleRepo.Save();
                ViewBag.Message = "Image updated!";
            }

            if (zeroId && ModelState.IsValid)
            {
                return(RedirectToAction("Article", new { articleForm.ID }));
            }

            return(View("Article", articleForm));
        }