public JsonResult DeletePost([DataSourceRequest] DataSourceRequest request, PostViewModel post)
        {
            var existingPost = this.posts.AllWithDeleted().FirstOrDefault(x => x.Id == post.Id);
            existingPost.DeletedOn = DateTime.Now;

            this.posts.Delete(existingPost);
            this.posts.SaveChanges();

            return this.Json(JsonRequestBehavior.AllowGet);
        }
        public JsonResult UpdatePosts([DataSourceRequest] DataSourceRequest request, PostViewModel post)
        {
            var existingPost = this.posts.AllWithDeleted().FirstOrDefault(x => x.Id == post.Id);

            if (post != null && ModelState.IsValid)
            {
                existingPost.Title = post.Title;
                existingPost.Content = post.Content;
                existingPost.Author.UserName = post.AuthorName;
                existingPost.ModifiedOn = DateTime.Now;

                this.posts.SaveChanges();
            }

            return this.Json(new[] { post }.ToDataSourceResult(request, this.ModelState), JsonRequestBehavior.AllowGet);
        }
        public JsonResult CreatePost([DataSourceRequest] DataSourceRequest request, PostViewModel post)
        {
            if (post != null && ModelState.IsValid)
            {
                var userId = this.User.Identity.GetUserId();

                var newPost = new Post
                {
                    Title = post.Title,
                    Content = post.Content,
                    AuthorId = userId,
                    CreatedOn = DateTime.Now
                };

                this.posts.Add(newPost);
                this.posts.SaveChanges();

                post.Id = newPost.Id;
            }

            return this.Json(new[] { post }.ToDataSourceResult(request, this.ModelState), JsonRequestBehavior.AllowGet);
        }