Example #1
0
        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));
        }
Example #2
0
        //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
                });
            }
        }
Example #3
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));
        }
        /**************************************************************************************
        *   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
            });
        }