123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- 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,
- 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)
- {
- 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, UserConfiguration userConfig)
- {
- var 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 opt.SendToUsers.Contains(userId, StringComparer.OrdinalIgnoreCase);
- }
- return false;
- }
- }
- public class NotificationOption
- {
- public string Type { get; set; }
- /// <summary>
- /// User Ids to not monitor (it's opt out)
- /// </summary>
- public string[] DisabledMonitorUsers { get; set; }
- /// <summary>
- /// User Ids to send to (if SendToUserMode == Custom)
- /// </summary>
- public string[] SendToUsers { get; set; }
- /// <summary>
- /// Gets or sets a value indicating whether this <see cref="NotificationOption"/> is enabled.
- /// </summary>
- /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
- public bool Enabled { get; set; }
- /// <summary>
- /// Gets or sets the title format string.
- /// </summary>
- /// <value>The title format string.</value>
- public string Title { get; set; }
- /// <summary>
- /// Gets or sets the description.
- /// </summary>
- /// <value>The description.</value>
- public string Description { get; set; }
-
- /// <summary>
- /// Gets or sets the disabled services.
- /// </summary>
- /// <value>The disabled services.</value>
- public string[] DisabledServices { get; set; }
- /// <summary>
- /// Gets or sets the send to user mode.
- /// </summary>
- /// <value>The send to user mode.</value>
- public SendToUserType SendToUserMode { get; set; }
- public NotificationOption()
- {
- DisabledServices = new string[] { };
- DisabledMonitorUsers = new string[] { };
- SendToUsers = new string[] { };
- }
- }
- public enum NotificationType
- {
- ApplicationUpdateAvailable,
- ApplicationUpdateInstalled,
- AudioPlayback,
- GamePlayback,
- InstallationFailed,
- PluginError,
- PluginInstalled,
- PluginUpdateInstalled,
- PluginUninstalled,
- NewLibraryContent,
- ServerRestartRequired,
- TaskFailed,
- VideoPlayback
- }
- public enum SendToUserType
- {
- All = 0,
- Admins = 1,
- Custom = 2
- }
- }
|