namespace HrynCo.NotificationService.Worker.Services.EmailProcessing; using System.Net.Mail; using HrynCo.NotificationService.Contracts.Messages; public static class SendEmailMessageValidator { public static void Validate(SendEmailMessage message) { ArgumentNullException.ThrowIfNull(message); if (message.CorrelationContext is null) throw new InvalidDataException("CorrelationContext is required."); if (string.IsNullOrWhiteSpace(message.CorrelationContext.CorrelationId)) throw new InvalidDataException("CorrelationContext.CorrelationId is required."); if (message.Data is null) throw new InvalidDataException("Data is required."); Require(message.Data.ServiceName, nameof(message.Data.ServiceName)); Require(message.Data.TemplateKey, nameof(message.Data.TemplateKey)); Require(message.Data.RecipientEmail, nameof(message.Data.RecipientEmail)); Require(message.Data.RecipientName, nameof(message.Data.RecipientName)); Require(message.Data.LanguageCode, nameof(message.Data.LanguageCode)); if (!MailAddress.TryCreate(message.Data.RecipientEmail, out _)) throw new InvalidDataException("RecipientEmail is not a valid email address."); if (message.Data.Variables is null) throw new InvalidDataException("Variables is required."); } private static void Require(string? value, string fieldName) { if (string.IsNullOrWhiteSpace(value)) throw new InvalidDataException($"{fieldName} is required."); } }