forked from ddrilling/AsbCloudServer
66 lines
2.6 KiB
C#
66 lines
2.6 KiB
C#
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}";
|
||
}
|
||
|
||
}
|