using LiteCharms.Infrastructure.Database; namespace LiteCharms.Features.Notifications.Commands.Handlers; public class CreateNotificationCommandHandler(IDbContextFactory contextFactory) : IRequestHandler> { public async ValueTask> Handle(CreateNotificationCommand request, CancellationToken cancellationToken) { try { using var context = await contextFactory.CreateDbContextAsync(cancellationToken); var newNotification = context.Notifications.Add(new Entities.Notification { Direction = request.Direction, SenderName = request.Sender, Sender = request.SenderAddress, Recipient = request.Recipient, RecipientAddress = request.RecipientAddress, Subject = request.Subject, Message = request.Message, Platform = request.Platform, Priority = request.Priority, CorrelationId = request.CorrelationId, CorrelationIdType = request.CorrelationIdType, IsInternal = request.IsInternal, IsHtml = request.IsHtml, Processed = false }); 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)); } } }