Merge pull request #234 from hargata/Hargata/email.reminder.template

created email template for reminder emails.
This commit is contained in:
Hargata Softworks
2024-02-06 16:13:04 -07:00
committed by GitHub
3 changed files with 77 additions and 4 deletions

View File

@@ -13,11 +13,14 @@ namespace CarCareTracker.Helper
public class MailHelper : IMailHelper
{
private readonly MailConfig mailConfig;
private readonly IFileHelper _fileHelper;
public MailHelper(
IConfiguration config
IConfiguration config,
IFileHelper fileHelper
) {
//load mailConfig from Configuration
mailConfig = config.GetSection("MailConfig").Get<MailConfig>();
_fileHelper = fileHelper;
}
public OperationResponse NotifyUserForRegistration(string emailAddress, string token)
{
@@ -75,14 +78,19 @@ namespace CarCareTracker.Helper
{
return new OperationResponse { Success = false, Message = "No reminders could be found" };
}
//get email template, this file has to exist since it's a static file.
var emailTemplatePath = _fileHelper.GetFullFilePath(StaticHelper.ReminderEmailTemplate);
string emailSubject = $"Vehicle Reminders From LubeLogger - {DateTime.Now.ToShortDateString()}";
//construct html table.
string emailBody = $"<h4>{vehicle.Year} {vehicle.Make} {vehicle.Model} #{vehicle.LicensePlate}</h4><br /><table style='width:100%'><tr><th style='padding:8px;'>Urgency</th><th style='padding:8px;'>Description</th></tr>";
string emailBody = File.ReadAllText(emailTemplatePath);
emailBody = emailBody.Replace("{VehicleInformation}", $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{vehicle.LicensePlate}");
string tableBody = "";
foreach(ReminderRecordViewModel reminder in reminders)
{
emailBody += $"<tr><td style='padding:8px; text-align:center;'>{reminder.Urgency}</td><td style='padding:8px; text-align:center;'>{reminder.Description}</td></tr>";
var dueOn = reminder.Metric == ReminderMetric.Both ? $"{reminder.Date} or {reminder.Mileage}" : reminder.Metric == ReminderMetric.Date ? $"{reminder.Date.ToShortDateString()}" : $"{reminder.Mileage}";
tableBody += $"<tr class='{reminder.Urgency}'><td>{StaticHelper.GetTitleCaseReminderUrgency(reminder.Urgency)}</td><td>{reminder.Description}</td><td>{dueOn}</td></tr>";
}
emailBody += "</table>";
emailBody = emailBody.Replace("{TableBody}", tableBody);
try
{
foreach (string emailAddress in emailAddresses)

View File

@@ -11,6 +11,22 @@ namespace CarCareTracker.Helper
public static string DbName = "data/cartracker.db";
public static string UserConfigPath = "config/userConfig.json";
public static string GenericErrorMessage = "An error occurred, please try again later";
public static string ReminderEmailTemplate = "defaults/reminderemailtemplate.txt";
public static string GetTitleCaseReminderUrgency(ReminderUrgency input)
{
switch (input)
{
case ReminderUrgency.NotUrgent:
return "Not Urgent";
case ReminderUrgency.VeryUrgent:
return "Very Urgent";
case ReminderUrgency.PastDue:
return "Past Due";
default:
return input.ToString();
}
}
public static string TruncateStrings(string input, int maxLength = 25)
{

View File

@@ -0,0 +1,49 @@
<html>
<head>
<style>
body {
font-family: arial, sans-serif;
}
table {
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
.VeryUrgent {
background-color: #EA9999;
}
.Urgent {
background-color: #FFE599;
}
.NotUrgent {
background-color: #B6D7A8;
}
.PastDue {
background-color: #CCCCCC;
}
</style>
</head>
<body>
<h2>{VehicleInformation}</h2>
<table>
<tr>
<th>
Urgency
</th>
<th>
Description
</th>
<th>
Due
</th>
</tr>
{TableBody}
</table>
</body>
</html>