diff --git a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs index b399f9d65..8697fa1b2 100644 --- a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs +++ b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs @@ -230,7 +230,7 @@ namespace PlexRequests.Services.Jobs public IEnumerable GetPlexTvShows(IEnumerable content) { - return content.Where(x => x.Type == Store.Models.Plex.PlexMediaType.Show.to); + return content.Where(x => x.Type == Store.Models.Plex.PlexMediaType.Show); } public bool IsTvShowAvailable(PlexContent[] plexShows, string title, string year, string providerId = null, int[] seasons = null) diff --git a/PlexRequests.Services/Jobs/RecentlyAdded.cs b/PlexRequests.Services/Jobs/RecentlyAdded.cs index 8db8c4084..2d1deed35 100644 --- a/PlexRequests.Services/Jobs/RecentlyAdded.cs +++ b/PlexRequests.Services/Jobs/RecentlyAdded.cs @@ -132,10 +132,11 @@ namespace PlexRequests.Services.Jobs private void GenerateMovieHtml(RecentlyAddedModel movies, PlexSettings plexSettings, StringBuilder sb) { + var orderedMovies = movies?._children?.OrderByDescending(x => x?.addedAt.UnixTimeStampToDateTime()).ToList() ?? new List(); sb.Append("

New Movies:



"); sb.Append( ""); - foreach (var movie in movies._children.OrderByDescending(x => x.addedAt.UnixTimeStampToDateTime())) + foreach (var movie in orderedMovies) { var plexGUID = string.Empty; try @@ -259,9 +260,6 @@ namespace PlexRequests.Services.Jobs if (!testEmail) { - //if (newletterSettings.SendToPlexUsers) - //{ - var users = UserHelper.GetUsersWithFeature(Features.RequestAddedNotification); if (users != null) { @@ -273,7 +271,6 @@ namespace PlexRequests.Services.Jobs } } } - //} if (newletterSettings.CustomUsersEmailAddresses != null && newletterSettings.CustomUsersEmailAddresses.Any()) diff --git a/PlexRequests.UI/Jobs/Scheduler.cs b/PlexRequests.UI/Jobs/Scheduler.cs index 06bdd7c6f..c2a4e2ed3 100644 --- a/PlexRequests.UI/Jobs/Scheduler.cs +++ b/PlexRequests.UI/Jobs/Scheduler.cs @@ -62,7 +62,7 @@ namespace PlexRequests.UI.Jobs var jobList = new List { JobBuilder.Create().WithIdentity("PlexAvailabilityChecker", "Plex").Build(), - JobBuilder.Create().WithIdentity("PlexContentCacher", "Plex").Build(), + JobBuilder.Create().WithIdentity("PlexContentCacher", "PlexCacher").Build(), JobBuilder.Create().WithIdentity("PlexEpisodeCacher", "Plex").Build(), JobBuilder.Create().WithIdentity("PlexUserChecker", "Plex").Build(), JobBuilder.Create().WithIdentity("SickRageCacher", "Cache").Build(), @@ -93,8 +93,8 @@ namespace PlexRequests.UI.Jobs var jobs = CreateJobs(); var triggers = CreateTriggers(); - var jobDetails = jobs as IJobDetail[] ?? jobs.ToArray(); - var triggerDetails = triggers as ITrigger[] ?? triggers.ToArray(); + var jobDetails = jobs as IJobDetail[] ?? jobs.OrderByDescending(x => x.Key.Name).ToArray(); + var triggerDetails = triggers as ITrigger[] ?? triggers.OrderByDescending(x => x.Key.Name).ToArray(); if (jobDetails.Length != triggerDetails.Length) { @@ -175,7 +175,7 @@ namespace PlexRequests.UI.Jobs .Build(); var plexCacher = TriggerBuilder.Create() - .WithIdentity("PlexContentCacher", "Plex") + .WithIdentity("PlexContentCacher", "PlexCacher") .StartNow() .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexContentCacher).RepeatForever()) .Build(); @@ -183,49 +183,49 @@ namespace PlexRequests.UI.Jobs var plexUserChecker = TriggerBuilder.Create() .WithIdentity("PlexUserChecker", "Plex") - .StartNow() + .StartAt(DateBuilder.FutureDate(30, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexUserChecker).RepeatForever()) .Build(); var srCacher = TriggerBuilder.Create() .WithIdentity("SickRageCacher", "Cache") - .StartNow() + .StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SickRageCacher).RepeatForever()) .Build(); var sonarrCacher = TriggerBuilder.Create() .WithIdentity("SonarrCacher", "Cache") - .StartNow() + .StartAt(DateBuilder.FutureDate(3, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SonarrCacher).RepeatForever()) .Build(); var cpCacher = TriggerBuilder.Create() .WithIdentity("CouchPotatoCacher", "Cache") - .StartNow() + .StartAt(DateBuilder.FutureDate(4, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInMinutes(s.CouchPotatoCacher).RepeatForever()) .Build(); var storeBackup = TriggerBuilder.Create() .WithIdentity("StoreBackup", "Database") - .StartNow() + .StartAt(DateBuilder.FutureDate(20, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreBackup).RepeatForever()) .Build(); var storeCleanup = TriggerBuilder.Create() .WithIdentity("StoreCleanup", "Database") - .StartNow() + .StartAt(DateBuilder.FutureDate(35, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreCleanup).RepeatForever()) .Build(); var userRequestLimiter = TriggerBuilder.Create() .WithIdentity("UserRequestLimiter", "Request") - .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) + .StartAt(DateBuilder.FutureDate(25, IntervalUnit.Minute)) // Everything has started on application start, lets wait 5 minutes .WithSimpleSchedule(x => x.WithIntervalInHours(s.UserRequestLimitResetter).RepeatForever()) .Build(); @@ -233,7 +233,7 @@ namespace PlexRequests.UI.Jobs var plexEpCacher = TriggerBuilder.Create() .WithIdentity("PlexEpisodeCacher", "Cache") - .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) + .StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.PlexEpisodeCacher).RepeatForever()) .Build(); @@ -243,14 +243,13 @@ namespace PlexRequests.UI.Jobs .WithIdentity("RecentlyAddedModel", "Email") .StartNow() .WithCronSchedule(s.RecentlyAddedCron) - .WithSimpleSchedule(x => x.WithIntervalInHours(2).RepeatForever()) .Build(); var fault = TriggerBuilder.Create() .WithIdentity("FaultQueueHandler", "Fault") //.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute)) - .StartNow() + .StartAt(DateBuilder.FutureDate(13, IntervalUnit.Minute)) .WithSimpleSchedule(x => x.WithIntervalInHours(s.FaultQueueHandler).RepeatForever()) .Build(); diff --git a/PlexRequests.UI/Modules/Admin/AdminModule.cs b/PlexRequests.UI/Modules/Admin/AdminModule.cs index 73780718a..80b1ea66c 100644 --- a/PlexRequests.UI/Modules/Admin/AdminModule.cs +++ b/PlexRequests.UI/Modules/Admin/AdminModule.cs @@ -977,7 +977,12 @@ namespace PlexRequests.UI.Modules StoreBackup = s.StoreBackup, StoreCleanup = s.StoreCleanup, JobRecorder = dict, - RecentlyAddedCron = s.RecentlyAddedCron + RecentlyAddedCron = s.RecentlyAddedCron, + PlexContentCacher = s.PlexContentCacher, + FaultQueueHandler = s.FaultQueueHandler, + PlexEpisodeCacher = s.PlexEpisodeCacher, + PlexUserChecker = s.PlexUserChecker, + UserRequestLimitResetter = s.UserRequestLimitResetter }; return View["SchedulerSettings", model]; } diff --git a/PlexRequests.UI/Modules/LayoutModule.cs b/PlexRequests.UI/Modules/LayoutModule.cs index 69e8b81ff..92b797960 100644 --- a/PlexRequests.UI/Modules/LayoutModule.cs +++ b/PlexRequests.UI/Modules/LayoutModule.cs @@ -104,7 +104,8 @@ namespace PlexRequests.UI.Modules || x.Name.Equals(JobNames.EpisodeCacher) || x.Name.Equals(JobNames.PlexChecker) || x.Name.Equals(JobNames.SonarrCacher) - || x.Name.Equals(JobNames.SrCacher)); + || x.Name.Equals(JobNames.SrCacher) + || x.Name.Equals(JobNames.PlexCacher)); return Response.AsJson(cacherJobs.Any() diff --git a/PlexRequests.UI/Views/Issues/Details.cshtml b/PlexRequests.UI/Views/Issues/Details.cshtml index fa89979af..c1c8c684f 100644 --- a/PlexRequests.UI/Views/Issues/Details.cshtml +++ b/PlexRequests.UI/Views/Issues/Details.cshtml @@ -11,7 +11,7 @@ formAction = "/" + baseUrl.ToHtmlString(); } - var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator) || Html.HasAnyPermission(Permissions.ManageRequests); + var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator, Permissions.ManageRequests); }

Details