public IActionResult Article(int?id = null) { ViewBag.Users = _UserRepo.GetAll(); ViewBag.Tags = _TagRepo.GetAll(); var article = _ArticleRepo.GetByID(id); ArticleForm articleForm; if (article != null) { articleForm = ArticleForm.FromModel(article); } else { articleForm = new ArticleForm(); } return(View(articleForm)); }
//public Object Get([FromUri] ArticleForm _articleForm) public Object Post(ArticleForm _articleForm) { try { if (HttpContext.Current.Session["username"] != null) { User user = mRepository.UserEC.FindByLogin(HttpContext.Current.Session["username"].ToString()); if (user.Role.name == "admin") { Category category = mRepository.CategoryEC.Find(_articleForm.Categoryid); Article article = new Article() { title = Uri.UnescapeDataString(_articleForm.Title) , category_id = _articleForm.Categoryid , description = Uri.UnescapeDataString(_articleForm.Description) , price = _articleForm.Price , quantity = _articleForm.Quantity , Category = category , image_base64 = (_articleForm.ImageBase64 ?? "") , Article_details = new List <Article_details>() { } , image_url = "" }; mRepository.ArticleEC.Save(article); return(new ApiResponse <Object>() { data = new List <ArticleForm>() { _articleForm }, error = "" }); } else { var response = Request.CreateResponse(HttpStatusCode.Moved); response.Headers.Location = new Uri(Url.Content("~/wwwroot/pages/home.htm")); return(response); } } else { var response = Request.CreateResponse(HttpStatusCode.Moved); response.Headers.Location = new Uri(Url.Content("~/wwwroot/pages/home.htm")); return(response); } } catch (DbEntityValidationException e) { string errorString = ""; foreach (var eve in e.EntityValidationErrors) { errorString += String.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); /*Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", * eve.Entry.Entity.GetType().Name, eve.Entry.State);*/ foreach (var ve in eve.ValidationErrors) { errorString += String.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); /*Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", * ve.PropertyName, ve.ErrorMessage);*/ } } throw; } catch (Exception ex) { return(new ApiResponse <Object>() { data = null, error = ex.Message + " : " + ex.StackTrace }); } }
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)); }
/************************************************************************************** * Function Name : PostArticle * Description : Use Ajax to find article data, filter it by combo parameters * Caution : Parameter : ArticleForm form -> Filter parameters from the page * Return : Queryed article data **************************************************************************************/ public Page PostArticle([FromForm] ArticleForm form) { var articles = from s in _context.Article select s; if (!String.IsNullOrEmpty(form.Author)) { articles = articles.Where((e) => e.Author.Contains(form.Author)); } if (!String.IsNullOrEmpty(form.Title)) { articles = articles.Where((e) => e.Title.Contains(form.Title)); } var name = HttpContext.Session.GetString("username"); if (!name.Equals("admin")) { articles = articles.Where((e) => e.Author.Equals(name)); } if (!String.IsNullOrEmpty(form.Order) && !String.IsNullOrEmpty(form.SortField)) { if (form.Order.Equals("asc")) { switch (form.SortField) { case "title": articles = articles.OrderBy((e) => e.Title); break; case "author": articles = articles.OrderBy((e) => e.Author); break; case "date": articles = articles.OrderBy((e) => e.Date); break; default: articles = articles.OrderBy((e) => e.Id); break; } } else { switch (form.SortField) { case "title": articles = articles.OrderByDescending((e) => e.Title); break; case "author": articles = articles.OrderByDescending((e) => e.Author); break; case "date": articles = articles.OrderByDescending((e) => e.Date); break; default: articles = articles.OrderByDescending((e) => e.Id); break; } } } var count = articles.Count(); var items = articles.Skip((form.PageNumber - 1) * form.PageSize).Take(form.PageSize).ToListAsync(); int page = count / form.PageSize; if (count % form.PageSize != 0) { page++; } return(new Page { Data = items.Result, Total = count, PageNum = form.PageNumber, PageSize = form.PageSize, Pages = page }); }