Files
event-sourcing-jambo/source/Jambo.Application/DomainEventHandlers/Blogs/BlogDisabledEventHandler.cs
Ivan Paulovich 2eddbb65e2 ok
2017-08-22 18:30:10 -03:00

35 lines
1.3 KiB
C#

using Jambo.Domain.Aggregates.Blogs;
using Jambo.Domain.Aggregates.Blogs.Events;
using MediatR;
using System;
using System.Threading.Tasks;
namespace Jambo.Application.DomainEventHandlers.Blogs
{
public class BlogDisabledEventHandler : IAsyncNotificationHandler<BlogUrlUpdatedDomainEvent>
{
private readonly IBlogReadOnlyRepository _blogReadOnlyRepository;
private readonly IBlogWriteOnlyRepository _blogWriteOnlyRepository;
public BlogDisabledEventHandler(
IBlogReadOnlyRepository blogReadOnlyRepository,
IBlogWriteOnlyRepository blogWriteOnlyRepository)
{
_blogReadOnlyRepository = blogReadOnlyRepository ??
throw new ArgumentNullException(nameof(blogReadOnlyRepository));
_blogWriteOnlyRepository = blogWriteOnlyRepository ??
throw new ArgumentNullException(nameof(blogWriteOnlyRepository));
}
public async Task Handle(BlogUrlUpdatedDomainEvent message)
{
Blog blog = await _blogReadOnlyRepository.GetBlog(message.AggregateRootId);
if (blog.Version == message.Version)
{
blog.Disable();
await _blogWriteOnlyRepository.UpdateBlog(blog);
}
}
}
}