aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Notifications/NotificationOptions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Notifications/NotificationOptions.cs')
-rw-r--r--MediaBrowser.Model/Notifications/NotificationOptions.cs125
1 files changed, 125 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Notifications/NotificationOptions.cs b/MediaBrowser.Model/Notifications/NotificationOptions.cs
new file mode 100644
index 000000000..7d80f3177
--- /dev/null
+++ b/MediaBrowser.Model/Notifications/NotificationOptions.cs
@@ -0,0 +1,125 @@
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Extensions;
+
+namespace MediaBrowser.Model.Notifications
+{
+ public class NotificationOptions
+ {
+ public NotificationOption[] Options { get; set; }
+
+ public NotificationOptions()
+ {
+ Options = new[]
+ {
+ new NotificationOption
+ {
+ Type = NotificationType.TaskFailed.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ServerRestartRequired.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ApplicationUpdateAvailable.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ApplicationUpdateInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginUpdateInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginUninstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.InstallationFailed.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginError.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ }
+ };
+ }
+
+ public NotificationOption GetOptions(string type)
+ {
+ foreach (NotificationOption i in Options)
+ {
+ if (StringHelper.EqualsIgnoreCase(type, i.Type)) return i;
+ }
+ return null;
+ }
+
+ public bool IsEnabled(string type)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ return opt != null && opt.Enabled;
+ }
+
+ public bool IsServiceEnabled(string service, string notificationType)
+ {
+ NotificationOption opt = GetOptions(notificationType);
+
+ return opt == null ||
+ !ListHelper.ContainsIgnoreCase(opt.DisabledServices, service);
+ }
+
+ public bool IsEnabledToMonitorUser(string type, string userId)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ return opt != null && opt.Enabled &&
+ !ListHelper.ContainsIgnoreCase(opt.DisabledMonitorUsers, userId);
+ }
+
+ public bool IsEnabledToSendToUser(string type, string userId, UserConfiguration userConfig)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ if (opt != null && opt.Enabled)
+ {
+ if (opt.SendToUserMode == SendToUserType.All)
+ {
+ return true;
+ }
+
+ if (opt.SendToUserMode == SendToUserType.Admins && userConfig.IsAdministrator)
+ {
+ return true;
+ }
+
+ return ListHelper.ContainsIgnoreCase(opt.SendToUsers, userId);
+ }
+
+ return false;
+ }
+ }
+}