Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }