From a206141f9813d01baef0f61d66f0262c7a3b989a Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Wed, 1 Feb 2017 08:27:16 +0000 Subject: [PATCH] Fixed #1036 --- .../Notification/EmbyNotificationEngine.cs | 13 +++++++-- .../Notification/PlexNotificationEngine.cs | 17 +++++++---- Ombi.UI/Modules/RequestsModule.cs | 28 ++++++++++++++++--- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/Ombi.Services/Notification/EmbyNotificationEngine.cs b/Ombi.Services/Notification/EmbyNotificationEngine.cs index ed8f587a6..0b3bc3140 100644 --- a/Ombi.Services/Notification/EmbyNotificationEngine.cs +++ b/Ombi.Services/Notification/EmbyNotificationEngine.cs @@ -130,6 +130,7 @@ namespace Ombi.Services.Notification var embySettings = await EmbySettings.GetSettingsAsync(); var embyUsers = EmbyApi.GetUsers(embySettings.FullUri, embySettings.ApiKey); var userAccount = embyUsers.FirstOrDefault(x => x.Policy.IsAdministrator); + var localUsers = UserHelper.GetUsers().ToList(); var adminUsername = userAccount.Name ?? string.Empty; @@ -179,9 +180,15 @@ namespace Ombi.Services.Notification var email = embyUsers.FirstOrDefault(x => x.Name.Equals(user, StringComparison.CurrentCultureIgnoreCase)); if (email == null) { - Log.Info("There is no email address for this Emby user, cannot send notification"); - // We do not have a emby user that requested this! - continue; + // Local User? + var local = localUsers.FirstOrDefault(x => x.UsernameOrAlias.Equals(user)); + if (local != null) + { + + Log.Info("Sending notification to: {0} at: {1}, for title: {2}", local.UsernameOrAlias, local.EmailAddress, model.Title); + await PublishUserNotification(local.UsernameOrAlias, local.EmailAddress, model.Title, model.PosterPath, type, model.Type); + continue; + } } Log.Info("Sending notification to: {0} at: {1}, for title: {2}", email.Name, embyUser.EmailAddress, model.Title); diff --git a/Ombi.Services/Notification/PlexNotificationEngine.cs b/Ombi.Services/Notification/PlexNotificationEngine.cs index 9fbd7dc59..71108bf53 100644 --- a/Ombi.Services/Notification/PlexNotificationEngine.cs +++ b/Ombi.Services/Notification/PlexNotificationEngine.cs @@ -171,8 +171,9 @@ namespace Ombi.Services.Notification try { var settings = await PlexSettings.GetSettingsAsync(); - var plexUser = PlexApi.GetUsers(settings.PlexAuthToken); + var plexUser = PlexApi.GetUsers(settings.PlexAuthToken); // TODO emby var userAccount = PlexApi.GetAccount(settings.PlexAuthToken); + var localUsers = UserHelper.GetUsers().ToList(); var adminUsername = userAccount.Username ?? string.Empty; @@ -219,11 +220,17 @@ namespace Ombi.Services.Notification } var email = plexUser.User.FirstOrDefault(x => x.Username.Equals(user, StringComparison.CurrentCultureIgnoreCase)); - if (email == null) + if (email == null) // This is not a Plex User { - Log.Info("There is no email address for this Plex user, cannot send notification"); - // We do not have a plex user that requested this! - continue; + // Local User? + var local = localUsers.FirstOrDefault(x => x.UsernameOrAlias.Equals(user)); + if (local != null) + { + + Log.Info("Sending notification to: {0} at: {1}, for title: {2}", local.UsernameOrAlias, local.EmailAddress, model.Title); + await PublishUserNotification(local.UsernameOrAlias, local.EmailAddress, model.Title, model.PosterPath, type, model.Type); + continue; + } } Log.Info("Sending notification to: {0} at: {1}, for title: {2}", email.Username, email.Email, model.Title); diff --git a/Ombi.UI/Modules/RequestsModule.cs b/Ombi.UI/Modules/RequestsModule.cs index 193d11c33..29ffe20f1 100644 --- a/Ombi.UI/Modules/RequestsModule.cs +++ b/Ombi.UI/Modules/RequestsModule.cs @@ -66,8 +66,10 @@ namespace Ombi.UI.Modules ICacheProvider cache, IAnalytics an, IPlexNotificationEngine engine, + IEmbyNotificationEngine embyEngine, ISecurityExtensions security, - ISettingsService customSettings) : base("requests", prSettings, security) + ISettingsService customSettings, + ISettingsService embyS) : base("requests", prSettings, security) { Service = service; PrSettings = prSettings; @@ -81,8 +83,10 @@ namespace Ombi.UI.Modules CpApi = cpApi; Cache = cache; Analytics = an; - NotificationEngine = engine; + PlexNotificationEngine = engine; + EmbyNotificationEngine = embyEngine; CustomizationSettings = customSettings; + EmbySettings = embyS; Get["/", true] = async (x, ct) => await LoadRequests(); Get["/movies", true] = async (x, ct) => await GetMovies(); @@ -111,11 +115,13 @@ namespace Ombi.UI.Modules private ISettingsService SickRageSettings { get; } private ISettingsService CpSettings { get; } private ISettingsService CustomizationSettings { get; } + private ISettingsService EmbySettings { get; } private ISonarrApi SonarrApi { get; } private ISickRageApi SickRageApi { get; } private ICouchPotatoApi CpApi { get; } private ICacheProvider Cache { get; } - private INotificationEngine NotificationEngine { get; } + private INotificationEngine PlexNotificationEngine { get; } + private INotificationEngine EmbyNotificationEngine { get; } private async Task LoadRequests() { @@ -438,7 +444,21 @@ namespace Ombi.UI.Modules originalRequest.Available = available; var result = await Service.UpdateRequestAsync(originalRequest); - await NotificationEngine.NotifyUsers(originalRequest, available ? NotificationType.RequestAvailable : NotificationType.RequestDeclined); + + var plexSettings = await PlexSettings.GetSettingsAsync(); + if (plexSettings.Enable) + { + await + PlexNotificationEngine.NotifyUsers(originalRequest, + available ? NotificationType.RequestAvailable : NotificationType.RequestDeclined); + } + + var embySettings = await EmbySettings.GetSettingsAsync(); + if (embySettings.Enable) + { + await EmbyNotificationEngine.NotifyUsers(originalRequest, + available ? NotificationType.RequestAvailable : NotificationType.RequestDeclined); + } return Response.AsJson(result ? new { Result = true, Available = available, Message = string.Empty } : new { Result = false, Available = false, Message = "Could not update the availability, please try again or check the logs" });