public ActionResult Destroy([DataSourceRequest] DataSourceRequest request, TweetGridViewModel model) { var tweetToRemove = this.Data.Tweets.GetById(model.Id); if (tweetToRemove != null) { this.Data.Tweets.Delete(tweetToRemove); this.Data.SaveChanges(); } return Json(new[] { model }.ToDataSourceResult(request)); }
public ActionResult Update([DataSourceRequest] DataSourceRequest request, TweetGridViewModel model) { TweetGridViewModel newModel = model; if (model != null && ModelState.IsValid) { var tweetInDb = this.Data.Tweets.All(new string[] { "Tags" }).SingleOrDefault(t => t.Id == model.Id); tweetInDb.Text = model.Text; tweetInDb.DateCreated = model.DateCreated; foreach (var tag in model.Tags) { if (tweetInDb.Tags.SingleOrDefault(t => t.Id == tag.Id) == null) { var tagToAdd = this.Data.Tags.GetById(tag.Id); tweetInDb.Tags.Add(tagToAdd); } } List<int> tagsToRemove = new List<int>(); foreach (var tag in tweetInDb.Tags) { if (model.Tags.SingleOrDefault(t => t.Id == tag.Id) == null) { tagsToRemove.Add(tag.Id); } } foreach (var id in tagsToRemove) { var tagToRemove = tweetInDb.Tags.SingleOrDefault(t => t.Id == id); tweetInDb.Tags.Remove(tagToRemove); } this.Data.SaveChanges(); } return Json(new[] { newModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet); }