using HrynCo.DAL.Abstract; using HrynCo.NotificationService.DAL.Abstract.Repositories; using HrynCo.NotificationService.Services.Core; using HrynCo.NotificationService.Services.Logging; using static HrynCo.NotificationService.Services.Core.ServiceResultHelper; namespace HrynCo.NotificationService.Services.EmailTemplates.Update; internal sealed class UpdateEmailTemplateHandler : RequestHandler> { private readonly IEmailTemplateRepository _templates; public UpdateEmailTemplateHandler( IContextualSerilogLogger logger, IUnitOfWork unitOfWork, IEmailTemplateRepository templates) : base(logger, unitOfWork) { _templates = templates; } protected override async Task> DoOnHandle( UpdateEmailTemplateCommand request, CancellationToken cancellationToken) { var template = await _templates.GetAsync( request.ServiceName, request.Key, request.LanguageCode, cancellationToken); if (template is null) return Failure("Template not found.", ServiceErrorCode.NotFound); template.Subject = request.Subject; template.HtmlBody = request.HtmlBody; template.TextBody = request.TextBody; template.Variables = request.Variables; template.Updated = DateTimeOffset.UtcNow; await _templates.UpdateAsync(template, cancellationToken); return Success(Unit.Value); } }