using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using Microsoft.Extensions.Configuration; using System; using System.Configuration; using System.IO; namespace AsbCloudInfrastructure.Services.Email; public class BaseFactory { protected readonly string platformName; protected readonly string platformUrl; protected readonly string companyName; protected readonly string supportMail; public BaseFactory(IConfiguration configuration) { platformName = configuration.GetValue("email:platformName") ?? throw new ConfigurationErrorsException("email:platformName не определен"); platformUrl = configuration.GetValue("email:platformUrl") ?? throw new ConfigurationErrorsException("email:platformUrl не определен"); companyName = configuration.GetValue("email:companyName") ?? throw new ConfigurationErrorsException("email:companyName не определен"); supportMail = configuration.GetValue("email:supportMail") ?? throw new ConfigurationErrorsException("email:supportMail не определен"); } public static string GetOrEmptyImageBase64(string resourceFileName) { if (string.IsNullOrEmpty(resourceFileName)) throw new ArgumentInvalidException(nameof(resourceFileName), "ResourceFileName doesn`t exist"); var baseDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) ?? string.Empty; var resourcesDir = "Res"; var logoFilePath = Path.Combine(baseDir, resourcesDir, resourceFileName); if (!File.Exists(logoFilePath)) { System.Diagnostics.Trace.TraceWarning($"GetOrEmptyImageBase64(). File {logoFilePath} not found."); return string.Empty; } var imageBytes = File.ReadAllBytes(logoFilePath); var format = Path.GetExtension(resourceFileName).Trim('.'); return "data:image/" + format + ";base64," + Convert.ToBase64String(imageBytes); } public static string MakeHref(string url, string text) => $"{text}"; public string MakeSignatue() { var logo = GetOrEmptyImageBase64("logo_32.png"); var sign = $"

---

" + $"{companyName}
" + $"Это письмо сформировано автоматически.
" + $"Для получения помощи по работе на портале {platformName}" + $"обращайтесь по адресу {supportMail}"; return sign; } public virtual string MakeSubject(WellDto well, string action) => $"{well.Deposit}, {well.Cluster}, {well.Caption}. {action}"; }