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, 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)); } } }