public ActionResult Form(PostsForm form) { form.IsNew = form.PostId == 0; if (!ModelState.IsValid) return View(form); Post post; if(form.IsNew) { post = new Post { CreatedAt = DateTime.UtcNow, User = Auth.User }; } else { post = Database.Session.Load<Post>(form.PostId); if (post == null) return HttpNotFound(); post.UpdatedAt = DateTime.UtcNow; } post.Title = form.Title; post.Slug = form.Slug; post.Content = form.Content; Database.Session.SaveOrUpdate(post); return RedirectToAction("Index"); }
public ActionResult Form(PostsForm form) { form.IsNew = form.PostId == null; if (!ModelState.IsValid) return View(form); var selectedTags = ReconsileTags(form.Tags).ToList(); Post post; if (form.IsNew) { post = new Post { CreatedAt = DateTime.UtcNow, User = Auth.User }; foreach (var tag in selectedTags) { post.Tags.Add(tag); } } else { post = Database.Session.Load<Post>(form.PostId); if (post == null) return HttpNotFound(); post.UpdatedAt = DateTime.UtcNow; foreach (var toAdd in selectedTags.Where(t => !post.Tags.Contains(t))) { post.Tags.Add(toAdd); } foreach (var toRemove in post.Tags.Where(t => !selectedTags.Contains(t)).ToList()) { post.Tags.Remove(toRemove); } } post.Title = form.Title; post.Slug = form.Slug; post.Content = form.Content; Database.Session.SaveOrUpdate(post); return RedirectToAction("Index"); }