Files
components/LiteCharms.Features/Notifications/Commands/Handlers/CreateNotificationCommandHandler.cs
T
Khwezi Mngoma 32d1019eb5
continuous-integration/drone/pr Build is passing
Migrated database changes
2026-05-10 11:16:52 +02:00

36 lines
1.3 KiB
C#

using LiteCharms.Infrastructure.Database;
namespace LiteCharms.Features.Notifications.Commands.Handlers;
public class CreateNotificationCommandHandler(IDbContextFactory<ShopDbContext> contextFactory) : IRequestHandler<CreateNotificationCommand, Result<Guid>>
{
public async ValueTask<Result<Guid>> Handle(CreateNotificationCommand request, CancellationToken cancellationToken)
{
try
{
using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
var newNotification = context.Notifications.Add(new Entities.Notification
{
Direction = request.Direction,
Sender = request.Author,
Subject = request.Title,
Message = request.Description,
Platform = request.Platform,
Recipient = request.PlatformAddress,
CorrelationId = request.CorrelationId,
CorrelationIdType = request.CorrelationIdType,
IsInternal = request.IsInternal,
});
return newNotification is not null
? Result.Ok(newNotification.Entity.Id)
: Result.Fail(new Error("Failed to create notification"));
}
catch (Exception ex)
{
return Result.Fail(new Error(ex.Message).CausedBy(ex));
}
}
}