using AsbCloudApp.Data; using AsbCloudApp.Exceptions; using Microsoft.Extensions.Configuration; using System; using System.IO; namespace AsbCloudInfrastructure.Services.Email { public class BaseFactory { private readonly string platformName; private readonly string platformUrl; private readonly string companyName; private readonly string supportMail; public BaseFactory(IConfiguration configuration) { platformName = configuration.GetValue("email:platformName", "Цифровое бурение"); platformUrl = configuration.GetValue("email:platformUrl", "https://cloud.digitaldrilling.ru/"); companyName = configuration.GetValue("email:companyName", "ООО \"Цифровое бурение\""); supportMail = configuration.GetValue("email:supportMail", "support@digitaldrilling.ru"); } 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}"; } }