diff --git a/Dashboard/MainWindow.xaml.cs b/Dashboard/MainWindow.xaml.cs index 44a66a60..8d67436b 100644 --- a/Dashboard/MainWindow.xaml.cs +++ b/Dashboard/MainWindow.xaml.cs @@ -423,10 +423,29 @@ private async System.Threading.Tasks.Task CheckAllConnectionsAsync() _notificationService?.ShowServerOfflineNotification( item.DisplayName, newStatus.ErrorMessage); + + var errorDetail = newStatus.ErrorMessage ?? "Connection failed"; + _emailAlertService.RecordAlert(item.Id, item.DisplayName, "Server Unreachable", + errorDetail, "Online", true, "email"); + _ = _emailAlertService.TrySendAlertEmailAsync( + "Server Unreachable", + item.DisplayName, + errorDetail, + "Online", + item.Id); } else if (!wasOnline && isOnline && prefs.NotifyOnConnectionRestored) { _notificationService?.ShowConnectionRestoredNotification(item.DisplayName); + + _emailAlertService.RecordAlert(item.Id, item.DisplayName, "Server Restored", + "Online", "Online", true, "email"); + _ = _emailAlertService.TrySendAlertEmailAsync( + "Server Restored", + item.DisplayName, + "Connection restored", + "Online", + item.Id); } } diff --git a/Dashboard/Services/EmailTemplateBuilder.cs b/Dashboard/Services/EmailTemplateBuilder.cs index 87387439..c2b9efbb 100644 --- a/Dashboard/Services/EmailTemplateBuilder.cs +++ b/Dashboard/Services/EmailTemplateBuilder.cs @@ -74,6 +74,8 @@ private static (string AccentColor, string BadgeText) GetSeverity(string metricN "Long-Running Query" => ("#D97706", "WARNING"), "TempDB Space" => ("#D97706", "WARNING"), "Long-Running Job" => ("#D97706", "WARNING"), + "Server Unreachable" => ("#DC2626", "CRITICAL"), + "Server Restored" => ("#16A34A", "RESOLVED"), _ => ("#2eaef1", "INFO") }; }