using AsbCloudApp.Data; using Microsoft.Extensions.Configuration; using System; using System.IO; namespace AsbCloudInfrastructure { class MailBodyFactory { private readonly string platformName; private readonly string platformUrl; private readonly string companyName; private readonly string supportMail; public MailBodyFactory(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 MakeSubject(WellDto well, string action) { var subj = $"{well.Deposit}, {well.Cluster}, {well.Caption}. Программа бурения. {action}"; return subj; } public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory) { var drillingProgramHref = MakeDrillingProgramHref(well); var body = $"

Здравствуйте, {publisherName}.

" + $"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + $"

От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." + MakeSignatue() + $""; return body; } public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName) { var drillingProgramHref = MakeDrillingProgramHref(well); var body = $"

Здравствуйте, {approverName}.

" + $"На портал {platformName} загружен документ {fileName}" + $" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" + $", месторождение ({well.Deposit}).
" + MakeSignatue() + $""; return body; } public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark) { var drillingProgramHref = MakeDrillingProgramHref(well); var body = $"

Здравствуйте, {publisherName}.

" + $"На портале {platformName} отклонен загруженный вами документ {fileName} " + $" по программе бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + $" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):
{fileMark.Comment}" + MakeSignatue() + $""; return body; } public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName) { var drillingProgramHref = MakeDrillingProgramHref(well); var body = $"

Здравствуйте, {publisherName}.

" + $"На портале {platformName} полностью согласован документ {fileName} " + $" по программе бурения скважины {drillingProgramHref}," + $" куст {well.Cluster}, месторождение {well.Deposit}." + MakeSignatue() + $""; return body; } private string MakeDrillingProgramHref(WellDto well) { var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram"; var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption); return drillingProgramHref; } private static string MakeHref(string url, string text) => $"{text}"; protected string MakeSignatue() { var logo = GetImageBase64("logo_32.png"); var sign = $"

---

" + $"{companyName}
" + $"Это письмо сформировано автоматически.
" + $"Для получения помощи по работе на портале {platformName}" + $"обращайтесь по адресу {supportMail}"; return sign; } public static string GetImageBase64(string resourceFileName) { if (string.IsNullOrEmpty(resourceFileName)) return null; var baseDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); var resoursesDir = "Res"; var logoFilePath = Path.Combine(baseDir, resoursesDir, resourceFileName); var imageBytes = File.ReadAllBytes(logoFilePath); var format = Path.GetExtension(resourceFileName).Trim('.'); return "data:image/" + format + ";base64," + Convert.ToBase64String(imageBytes); } } }