| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | #pragma warning disable CS1591using System;using MediaBrowser.Model.Extensions;using MediaBrowser.Model.Users;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                },                new NotificationOption                {                    Type = NotificationType.UserLockedOut.ToString(),                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                }            };        }        public NotificationOption GetOptions(string type)        {            foreach (NotificationOption i in Options)            {                if (string.Equals(type, i.Type, StringComparison.OrdinalIgnoreCase)) 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, Guid userId)        {            NotificationOption opt = GetOptions(type);            return opt != null && opt.Enabled &&                   !ListHelper.ContainsIgnoreCase(opt.DisabledMonitorUsers, userId.ToString(""));        }        public bool IsEnabledToSendToUser(string type, string userId, UserPolicy userPolicy)        {            NotificationOption opt = GetOptions(type);            if (opt != null && opt.Enabled)            {                if (opt.SendToUserMode == SendToUserType.All)                {                    return true;                }                if (opt.SendToUserMode == SendToUserType.Admins && userPolicy.IsAdministrator)                {                    return true;                }                return ListHelper.ContainsIgnoreCase(opt.SendToUsers, userId);            }            return false;        }    }}
 |