public void Apply(PostChangedEvent evnt) { var category = _categories.GetCategory(evnt.CategoryUrl); var post = category.Posts.FirstOrDefault(_ => string.Equals(_.Url, evnt.Url)); post.Title = evnt.Title; post.Body = evnt.Body; post.PublishAt = evnt.PublishAt; post.TagUrls = new HashSet <string>(evnt.Tags.Select(_ => _.Url).ToList()); post.Infobar = evnt.Infobar; post.Hidden = evnt.Hidden; post.Comments = evnt.Comments; }
public void Handle(PostChangedEvent evnt) { var key = KeyUtils.GetStateKey(evnt.AggregateId); var state = _db.GetObject <BlogState>(key); if (state == null) { throw new Exception("Blog has to be started first."); } var post = state.Posts.FirstOrDefault(_ => _.Url == evnt.Url); if (post == null) { throw new Exception("Post should be created first."); } var tags = evnt.Tags.Select(_ => new TagState { TagUrl = _.Url, TagTitle = _.Title }).ToList(); post.Url = evnt.Url; post.Title = evnt.Title; post.BodyShort = TextUtils.GetHtmlFromMarkdown(TextUtils.GetBodyShort(evnt.Body)); post.Body = TextUtils.GetHtmlFromMarkdown(evnt.Body); post.PublishAt = evnt.PublishAt; post.CategoryTitle = evnt.CategoryTitle; post.CategoryUrl = evnt.CategoryUrl; post.Infobar = evnt.Infobar; post.IsHidden = evnt.Hidden; post.Tags = tags; _db.SetObject(key, state); }