From 6bcbb0cc86c8561df98310ff67fdb2b08521ca82 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Tue, 6 Feb 2024 06:12:13 -0700 Subject: [PATCH] created email template for reminder emails. --- Helper/MailHelper.cs | 16 +++++-- Helper/StaticHelper.cs | 16 +++++++ wwwroot/defaults/reminderemailtemplate.txt | 49 ++++++++++++++++++++++ 3 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 wwwroot/defaults/reminderemailtemplate.txt diff --git a/Helper/MailHelper.cs b/Helper/MailHelper.cs index 55871d4..9f30c5f 100644 --- a/Helper/MailHelper.cs +++ b/Helper/MailHelper.cs @@ -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(); + _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 = $"

{vehicle.Year} {vehicle.Make} {vehicle.Model} #{vehicle.LicensePlate}


"; + 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 += $""; + var dueOn = reminder.Metric == ReminderMetric.Both ? $"{reminder.Date} or {reminder.Mileage}" : reminder.Metric == ReminderMetric.Date ? $"{reminder.Date.ToShortDateString()}" : $"{reminder.Mileage}"; + tableBody += $""; } - emailBody += "
UrgencyDescription
{reminder.Urgency}{reminder.Description}
{StaticHelper.GetTitleCaseReminderUrgency(reminder.Urgency)}{reminder.Description}{dueOn}
"; + emailBody = emailBody.Replace("{TableBody}", tableBody); try { foreach (string emailAddress in emailAddresses) diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index 54ca96f..4c347c5 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -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) { diff --git a/wwwroot/defaults/reminderemailtemplate.txt b/wwwroot/defaults/reminderemailtemplate.txt new file mode 100644 index 0000000..a3a7d59 --- /dev/null +++ b/wwwroot/defaults/reminderemailtemplate.txt @@ -0,0 +1,49 @@ + + + + + +

{VehicleInformation}

+ + + + + + +{TableBody} +
+Urgency + +Description + +Due +
+ + \ No newline at end of file