예제 #1
0
        public PostGetViewModel Handle(PostRequest message, PostGetViewModel result)
        {
            var post = ActivePosts.FirstOrDefault();
            if (message.Slug != null) post = AllPosts.FirstOrDefault(x => x.Slug.ToLower() == message.Slug.ToLower());
            if (post == null) return result; //Decision: don't throw, handle downstream as to what this means

            var previous = ActivePosts.OrderBy(x => x.PublishedAtCst).FirstOrDefault(x => x.PublishedAtCst > post.PublishedAtCst);
            var next = ActivePosts.FirstOrDefault(x => x.PublishedAtCst < post.PublishedAtCst);

            result.Post = post;
            result.Previous = previous;
            result.Next = next;

            return result;
        }
예제 #2
0
        public void Execute(IContainer container)
        {
            container.Register(c => new PostGetController(c.Resolve<IMediator>()) {ActionInvoker = c.Resolve<IActionInvoker>()});

            var mediator = container.Resolve<ISubscribeHandlers>();

            mediator.Subscribe<PostRequest, PostGetViewModel>(message =>
            {
                var posts = container.Resolve<IReadOnlyList<PostViewModel>>();
                RefreshContent(container, posts);
                var result = new PostGetViewModel();

                result = new FilteredPostVault(posts).Handle(message, result);
                return result;
            });

            mediator.Subscribe<PostIndexRequest, PostIndexViewModel>(message => new FilteredPostVault(container.Resolve<IReadOnlyList<PostViewModel>>()).Handle(message));
        }
예제 #3
0
        public void Execute(IContainer container)
        {
            container.Register(c => new PostGetController(c.Resolve <IMediator>())
            {
                ActionInvoker = c.Resolve <IActionInvoker>()
            });

            var mediator = container.Resolve <ISubscribeHandlers>();

            mediator.Subscribe <PostRequest, PostGetViewModel>(message =>
            {
                var posts = container.Resolve <IReadOnlyList <PostViewModel> >();
                RefreshContent(container, posts);
                var result = new PostGetViewModel();

                result = new FilteredPostVault(posts).Handle(message, result);
                return(result);
            });

            mediator.Subscribe <PostIndexRequest, PostIndexViewModel>(message => new FilteredPostVault(container.Resolve <IReadOnlyList <PostViewModel> >()).Handle(message));
        }