Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/DevBetterWeb.Core/Entities/ArchiveVideo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ public void CreateMdComments(IMarkdownService markdownService)
}
}

internal void AddDomainEvent(VideoAddedEvent videoAddedEvent)
internal void NewVideoAdded()
{
var videoAddedEvent = new VideoAddedEvent(this);
RegisterDomainEvent(videoAddedEvent);
}
}
3 changes: 2 additions & 1 deletion src/DevBetterWeb.Core/Entities/Member.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Ardalis.GuardClauses;
using DevBetterWeb.Core.Enums;
Expand Down Expand Up @@ -425,7 +426,7 @@ public MemberAddressUpdatedHandler(IMapCoordinateService mapCoordinateService,
_jsonParserService = jsonParserService;
}

public async Task Handle(MemberAddressUpdatedEvent addressUpdatedEvent)
public async Task Handle(MemberAddressUpdatedEvent addressUpdatedEvent, CancellationToken cancellationToken)
{
var member = addressUpdatedEvent.Member;
var oldAddress = addressUpdatedEvent.OldAddress;
Expand Down
9 changes: 6 additions & 3 deletions src/DevBetterWeb.Core/Interfaces/IHandle.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.SharedKernel;
using MediatR;

namespace DevBetterWeb.Core.Interfaces;

public interface IHandle<T> where T : BaseDomainEvent
public interface IHandle<in T> where T : BaseDomainEvent
{
Task Handle(T domainEvent);
Task Handle(T domainEvent, CancellationToken cancellationToken);
}
3 changes: 1 addition & 2 deletions src/DevBetterWeb.Core/Services/CreateVideoService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ public async Task<UploadChunkStatus> UploadChunkAsync(bool isBaseFolder, string
var existVideo = await _repositoryArchiveVideo.FirstOrDefaultAsync(spec, cancellationToken);
if (existVideo == null)
{
var videoAddedEvent = new VideoAddedEvent(archiveVideo);
archiveVideo.AddDomainEvent(videoAddedEvent);
archiveVideo.NewVideoAdded();

_ = await _repositoryArchiveVideo.AddAsync(archiveVideo, cancellationToken);

Expand Down
27 changes: 27 additions & 0 deletions src/DevBetterWeb.Infrastructure/DomainEvents/DomainEventHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Core.SharedKernel;
using MediatR;

namespace DevBetterWeb.Infrastructure.DomainEvents;

public class DomainEventHandler<TDomainEvent> : INotificationHandler<TDomainEvent>
where TDomainEvent : BaseDomainEvent
{
private readonly IEnumerable<IHandle<TDomainEvent>> _handlers;

public DomainEventHandler(IEnumerable<IHandle<TDomainEvent>> handlers)
{
_handlers = handlers;
}

public async Task Handle(TDomainEvent notification, CancellationToken cancellationToken)
{
foreach (var handler in _handlers)
{
await handler.Handle(notification, cancellationToken);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public AppStartedEventHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public async Task Handle(AppStartedEvent domainEvent)
public async Task Handle(AppStartedEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"DevBetter.com web app started at {domainEvent.StartDateTime}.";
await _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Entities;
using DevBetterWeb.Core.Events;
Expand Down Expand Up @@ -34,7 +35,7 @@ public DailyCheckInitiatedEventHandler(AdminUpdatesWebhook webhook,
_repository = repository;
}

public async Task Handle(DailyCheckInitiatedEvent domainEvent)
public async Task Handle(DailyCheckInitiatedEvent domainEvent, CancellationToken cancellationToken)
{
AppendOnlyStringList messages = new();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogBillingActivityCreatedEventHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(BillingActivityCreatedEvent domainEvent)
public Task Handle(BillingActivityCreatedEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"BillingActivity with action {domainEvent.BillingActivity.Details.ActionVerbPastTense} created for member {domainEvent.BillingActivity.Details.MemberName}";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
Expand All @@ -15,7 +16,7 @@ public DiscordLogExceptionHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(ExceptionEvent domainEvent)
public Task Handle(ExceptionEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Exception {DateTime.UtcNow}: {domainEvent.Exception}";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogForgotPasswordHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(PasswordResetEvent domainEvent)
public Task Handle(PasswordResetEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Password reset requested by {domainEvent.EmailAddress}.";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogInvalidUserHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(InvalidUserEvent domainEvent)
public Task Handle(InvalidUserEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Password reset requested by {domainEvent.EmailAddress} but no confirmed user found with that address.";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -20,7 +21,7 @@ public static string returnWebhookMessageString(MemberAddedBookAddEvent domainEv
"Check out the leaderboard here: https://devbetter.com/Leaderboard.";
}

public Task Handle(MemberAddedBookAddEvent domainEvent)
public Task Handle(MemberAddedBookAddEvent domainEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(domainEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -20,7 +21,7 @@ public static string returnWebhookMessageString(MemberAddedBookReadEvent domainE
$"Check out the leaderboard here: https://devbetter.com/Leaderboard.";
}

public Task Handle(MemberAddedBookReadEvent domainEvent)
public Task Handle(MemberAddedBookReadEvent domainEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(domainEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogMemberAvatarUpdateHandler(DevBetterComNotificationsWebhook webh
_webhook = webhook;
}

public Task Handle(MemberAvatarUpdatedEvent memberAvatarUpdatedEvent)
public Task Handle(MemberAvatarUpdatedEvent memberAvatarUpdatedEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(memberAvatarUpdatedEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogMemberUpdateHandler(DevBetterComNotificationsWebhook webhook)
_webhook = webhook;
}

public Task Handle(MemberUpdatedEvent memberUpdatedEvent)
public Task Handle(MemberUpdatedEvent memberUpdatedEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(memberUpdatedEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogMemberUpdateHomeAddressHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(MemberHomeAddressUpdatedEvent memberHomeAddressUpdatedEvent)
public Task Handle(MemberHomeAddressUpdatedEvent memberHomeAddressUpdatedEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(memberHomeAddressUpdatedEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -20,7 +21,7 @@ public static string returnWebhookMessageString(NewBookCreatedEvent domainEvent)
$"Check out the leaderboard here: https://devbetter.com/Leaderboard.";
}

public Task Handle(NewBookCreatedEvent domainEvent)
public Task Handle(NewBookCreatedEvent domainEvent, CancellationToken cancellationToken)
{
var message = returnWebhookMessageString(domainEvent);
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogNewUserRegisteredHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(NewUserRegisteredEvent domainEvent)
public Task Handle(NewUserRegisteredEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"New user registered with email address: {domainEvent.EmailAddress} from IP {domainEvent.IpAddress}.";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogSiteErrorOccurredHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(SiteErrorOccurredEvent domainEvent)
public Task Handle(SiteErrorOccurredEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Site error: {domainEvent.SiteException.ToString()}.";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogSubscriptionAddedEventHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(SubscriptionAddedEvent domainEvent)
public Task Handle(SubscriptionAddedEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Member {domainEvent.Member.UserFullName()} added subscription {domainEvent.MemberSubscription.Id}";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogSubscriptionUpdatedEventHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(SubscriptionUpdatedEvent domainEvent)
public Task Handle(SubscriptionUpdatedEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"Member {domainEvent.Member.UserFullName()} updated subscription {domainEvent.MemberSubscription.Id}";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogUserAddedToRoleHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(UserAddedToRoleEvent domainEvent)
public Task Handle(UserAddedToRoleEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"User {domainEvent.EmailAddress} added to role {domainEvent.Role}.";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogUserEmailConfirmedChangedHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(UserEmailConfirmedChangedEvent domainEvent)
public Task Handle(UserEmailConfirmedChangedEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"For the user {domainEvent.EmailAddress} EmailConfirmed value has been changed to: {domainEvent.IsEmailConfirmed}";
return _webhook.SendAsync(message);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks;
using DevBetterWeb.Core.Events;
using DevBetterWeb.Core.Interfaces;
using DevBetterWeb.Infrastructure.DiscordWebooks;
Expand All @@ -14,7 +15,7 @@ public DiscordLogUserRemovedFromRoleHandler(AdminUpdatesWebhook webhook)
_webhook = webhook;
}

public Task Handle(UserRemovedFromRoleEvent domainEvent)
public Task Handle(UserRemovedFromRoleEvent domainEvent, CancellationToken cancellationToken)
{
var message = $"User {domainEvent.EmailAddress} removed from role {domainEvent.Role}.";
return _webhook.SendAsync(message);
Expand Down
Loading
Loading