From fadda8ef5663beea338f65ef9c69cd96ec1c5858 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 26 Apr 2014 23:42:05 -0400 Subject: add new notification features --- .../Configuration/NotificationOptions.cs | 149 +++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 MediaBrowser.Model/Configuration/NotificationOptions.cs (limited to 'MediaBrowser.Model/Configuration/NotificationOptions.cs') diff --git a/MediaBrowser.Model/Configuration/NotificationOptions.cs b/MediaBrowser.Model/Configuration/NotificationOptions.cs new file mode 100644 index 000000000..4c0c092fe --- /dev/null +++ b/MediaBrowser.Model/Configuration/NotificationOptions.cs @@ -0,0 +1,149 @@ +using System; +using System.Linq; + +namespace MediaBrowser.Model.Configuration +{ + public class NotificationOptions + { + public NotificationOption[] Options { get; set; } + + public NotificationOptions() + { + Options = new[] + { + new NotificationOption + { + Type = NotificationType.TaskFailed.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ServerRestartRequired.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ApplicationUpdateAvailable.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.ApplicationUpdateInstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginUpdateInstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginUninstalled.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.InstallationFailed.ToString(), + Enabled = true + }, + new NotificationOption + { + Type = NotificationType.PluginInstalled.ToString(), + Enabled = true + } + }; + } + + public NotificationOption GetOptions(string type) + { + return Options.FirstOrDefault(i => string.Equals(type, i.Type, StringComparison.OrdinalIgnoreCase)); + } + + public bool IsEnabled(string type) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled; + } + + public bool IsServiceEnabled(string service, string notificationType) + { + var opt = GetOptions(notificationType); + + return opt == null || + !opt.DisabledServices.Contains(service, StringComparer.OrdinalIgnoreCase); + } + + public bool IsEnabledToMonitorUser(string type, string userId) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled && + !opt.DisabledMonitorUsers.Contains(userId, StringComparer.OrdinalIgnoreCase); + } + + public bool IsEnabledToSendToUser(string type, string userId) + { + var opt = GetOptions(type); + + return opt != null && opt.Enabled && + !opt.DisabledSendToUsers.Contains(userId, StringComparer.OrdinalIgnoreCase); + } + } + + public class NotificationOption + { + public string Type { get; set; } + + /// + /// User Ids to not monitor (it's opt out) + /// + public string[] DisabledMonitorUsers { get; set; } + + /// + /// User Ids to not send to (it's opt out) + /// + public string[] DisabledSendToUsers { get; set; } + + /// + /// Gets or sets a value indicating whether this is enabled. + /// + /// true if enabled; otherwise, false. + public bool Enabled { get; set; } + + /// + /// Gets or sets the title format string. + /// + /// The title format string. + public string Title { get; set; } + + /// + /// Gets or sets the disabled services. + /// + /// The disabled services. + public string[] DisabledServices { get; set; } + + public NotificationOption() + { + DisabledServices = new string[] { }; + DisabledMonitorUsers = new string[] { }; + DisabledSendToUsers = new string[] { }; + } + } + + public enum NotificationType + { + TaskFailed, + InstallationFailed, + NewLibraryContent, + ServerRestartRequired, + ApplicationUpdateAvailable, + ApplicationUpdateInstalled, + PluginInstalled, + PluginUpdateInstalled, + PluginUninstalled, + AudioPlayback, + GamePlayback, + VideoPlayback + } +} -- cgit v1.2.3