added test email
This commit is contained in:
@@ -23,6 +23,7 @@ namespace CarCareTracker.Controllers
|
|||||||
private readonly IReminderRecordDataAccess _reminderRecordDataAccess;
|
private readonly IReminderRecordDataAccess _reminderRecordDataAccess;
|
||||||
private readonly IReminderHelper _reminderHelper;
|
private readonly IReminderHelper _reminderHelper;
|
||||||
private readonly ITranslationHelper _translationHelper;
|
private readonly ITranslationHelper _translationHelper;
|
||||||
|
private readonly IMailHelper _mailHelper;
|
||||||
public HomeController(ILogger<HomeController> logger,
|
public HomeController(ILogger<HomeController> logger,
|
||||||
IVehicleDataAccess dataAccess,
|
IVehicleDataAccess dataAccess,
|
||||||
IUserLogic userLogic,
|
IUserLogic userLogic,
|
||||||
@@ -33,7 +34,8 @@ namespace CarCareTracker.Controllers
|
|||||||
IExtraFieldDataAccess extraFieldDataAccess,
|
IExtraFieldDataAccess extraFieldDataAccess,
|
||||||
IReminderRecordDataAccess reminderRecordDataAccess,
|
IReminderRecordDataAccess reminderRecordDataAccess,
|
||||||
IReminderHelper reminderHelper,
|
IReminderHelper reminderHelper,
|
||||||
ITranslationHelper translationHelper)
|
ITranslationHelper translationHelper,
|
||||||
|
IMailHelper mailHelper)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_dataAccess = dataAccess;
|
_dataAccess = dataAccess;
|
||||||
@@ -46,6 +48,7 @@ namespace CarCareTracker.Controllers
|
|||||||
_loginLogic = loginLogic;
|
_loginLogic = loginLogic;
|
||||||
_vehicleLogic = vehicleLogic;
|
_vehicleLogic = vehicleLogic;
|
||||||
_translationHelper = translationHelper;
|
_translationHelper = translationHelper;
|
||||||
|
_mailHelper = mailHelper;
|
||||||
}
|
}
|
||||||
private int GetUserID()
|
private int GetUserID()
|
||||||
{
|
{
|
||||||
@@ -572,6 +575,12 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("_ServerConfig", viewModel);
|
return PartialView("_ServerConfig", viewModel);
|
||||||
}
|
}
|
||||||
|
[Authorize(Roles = nameof(UserData.IsRootUser))]
|
||||||
|
public IActionResult SendTestEmail(string emailAddress)
|
||||||
|
{
|
||||||
|
var result = _mailHelper.SendTestEmail(emailAddress);
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||||
public IActionResult Error()
|
public IActionResult Error()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace CarCareTracker.Helper
|
|||||||
OperationResponse NotifyUserForPasswordReset(string emailAddress, string token);
|
OperationResponse NotifyUserForPasswordReset(string emailAddress, string token);
|
||||||
OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token);
|
OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token);
|
||||||
OperationResponse NotifyUserForReminders(Vehicle vehicle, List<string> emailAddresses, List<ReminderRecordViewModel> reminders);
|
OperationResponse NotifyUserForReminders(Vehicle vehicle, List<string> emailAddresses, List<ReminderRecordViewModel> reminders);
|
||||||
|
OperationResponse SendTestEmail(string emailAddress);
|
||||||
}
|
}
|
||||||
public class MailHelper : IMailHelper
|
public class MailHelper : IMailHelper
|
||||||
{
|
{
|
||||||
@@ -74,6 +75,28 @@ namespace CarCareTracker.Helper
|
|||||||
return OperationResponse.Failed();
|
return OperationResponse.Failed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public OperationResponse SendTestEmail(string emailAddress)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(mailConfig.EmailServer))
|
||||||
|
{
|
||||||
|
return OperationResponse.Failed("SMTP Server Not Setup");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrWhiteSpace(emailAddress))
|
||||||
|
{
|
||||||
|
return OperationResponse.Failed("Email Address or Token is invalid");
|
||||||
|
}
|
||||||
|
string emailSubject = _translator.Translate(serverLanguage, "Test Email from LubeLogger");
|
||||||
|
string emailBody = _translator.Translate(serverLanguage, "If you are seeing this email it means your SMTP configuration is functioning correctly");
|
||||||
|
var result = SendEmail(new List<string> { emailAddress }, emailSubject, emailBody);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
return OperationResponse.Succeed("Email Sent!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return OperationResponse.Failed();
|
||||||
|
}
|
||||||
|
}
|
||||||
public OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token)
|
public OperationResponse NotifyUserForAccountUpdate(string emailAddress, string token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(mailConfig.EmailServer))
|
if (string.IsNullOrWhiteSpace(mailConfig.EmailServer))
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" readonly id="inputSMTPServer" class="form-control" placeholder="@translator.Translate(userLanguage, "Not Configured")" value="@Model.SMTPConfig.EmailServer">
|
<input type="text" readonly id="inputSMTPServer" class="form-control" placeholder="@translator.Translate(userLanguage, "Not Configured")" value="@Model.SMTPConfig.EmailServer">
|
||||||
<div class="input-group-text">
|
<div class="input-group-text">
|
||||||
<button type="button" class="btn btn-sm text-secondary password-visible-button" onclick="togglePasswordVisibility(this)"><i class="bi bi-send"></i></button>
|
<button type="button" @(string.IsNullOrWhiteSpace(Model.SMTPConfig.EmailServer) ? "disabled" : "") class="btn btn-sm text-secondary" onclick="sendTestEmail()"><i class="bi bi-send"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -94,6 +94,33 @@ function updateSettings() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
function sendTestEmail() {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Send Test Email',
|
||||||
|
html: `
|
||||||
|
<input type="text" id="testEmailRecipient" class="swal2-input" placeholder="Email Address" onkeydown="handleSwalEnter(event)">
|
||||||
|
`,
|
||||||
|
confirmButtonText: 'Send',
|
||||||
|
focusConfirm: false,
|
||||||
|
preConfirm: () => {
|
||||||
|
const emailRecipient = $("#testEmailRecipient").val();
|
||||||
|
if (!emailRecipient || emailRecipient.trim() == '') {
|
||||||
|
Swal.showValidationMessage(`Please enter a valid email address`);
|
||||||
|
}
|
||||||
|
return { emailRecipient }
|
||||||
|
},
|
||||||
|
}).then(function (result) {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.post('/Home/SendTestEmail', { emailAddress: result.value.emailRecipient }, function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
successToast(data.message);
|
||||||
|
} else {
|
||||||
|
errorToast(data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
function makeBackup() {
|
function makeBackup() {
|
||||||
$.get('/Files/MakeBackup', function (data) {
|
$.get('/Files/MakeBackup', function (data) {
|
||||||
window.location.href = data;
|
window.location.href = data;
|
||||||
|
|||||||
Reference in New Issue
Block a user