using HrynCo.NotificationService.DAL.Abstract.Templates; namespace HrynCo.NotificationService.Web.Controllers.Api.Services; public sealed class UpsertTemplateDefinitionRequest { public Guid? Revision { get; init; } public required IReadOnlyList Variables { get; init; } public required IReadOnlyList Translations { get; init; } public IReadOnlyList? RemoveLanguageCodes { get; init; } public EmailTemplateDefinitionPatch ToPatch(Guid serviceId, string key) { if (Variables is null || Translations is null) throw new EmailTemplateWriteException("variables and translations must be JSON arrays, including when empty.", false); if (Variables.Any(v => v is null) || Translations.Any(t => t is null)) throw new EmailTemplateWriteException("variables and translations cannot contain null elements.", false); return new EmailTemplateDefinitionPatch { ServiceId = serviceId, Key = key, Revision = Revision, Variables = Variables.Select(v => new EmailTemplateVariable { Name = v.Name, Required = v.Required }).ToList(), Translations = Translations.Select(t => new EmailTemplate { ServiceName = "", Key = key, LanguageCode = t.LanguageCode, Created = DateTimeOffset.UtcNow, Subject = t.Subject, HtmlBody = t.HtmlBody, TextBody = t.TextBody }).ToList(), RemoveLanguageCodes = RemoveLanguageCodes ?? [] }; } }