DD.WellWorkover.Cloud/AsbCloudInfrastructure/Services/Email/BaseFactory.cs
2023-09-29 12:06:46 +05:00

66 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
=> $"<a href=\"{url}\">{text}</a>";
public string MakeSignatue()
{
var logo = GetOrEmptyImageBase64("logo_32.png");
var sign = $"<br><br>---<br><img src=\"{logo}\"/><br>" +
$"{companyName}<br>" +
$"Это письмо сформировано автоматически.<br>" +
$"Для получения помощи по работе на портале {platformName}" +
$"обращайтесь по адресу {supportMail}";
return sign;
}
public virtual string MakeSubject(WellDto well, string action)
=> $"{well.Deposit}, {well.Cluster}, {well.Caption}. {action}";
}
}