From 42c437905e9656053967e26a04d26023a485d64f Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Mon, 24 Oct 2016 15:08:30 +0100 Subject: [PATCH] User management, migration and newsletter --- .../Migrations/Version195.cs | 47 ++- .../PlexRequests.Core.Migration.csproj | 19 + PlexRequests.Core.Migration/app.config | 11 + .../job_scheduling_data_2_0.xsd | 361 ++++++++++++++++++ PlexRequests.Core.Migration/packages.config | 6 + .../SettingModels/NewsletterSettings.cs | 11 +- .../SettingModels/ScheduledJobsSettings.cs | 18 +- PlexRequests.Core/UserMapper.cs | 3 +- PlexRequests.Helpers/StringHelper.cs | 33 ++ PlexRequests.Helpers/UserClaims.cs | 7 +- .../Jobs/HtmlTemplateGenerator.cs | 10 +- PlexRequests.Services/Jobs/RecentlyAdded.cs | 244 +++--------- PlexRequests.Store/TableCreation.cs | 8 +- PlexRequests.Store/UsersModel.cs | 78 ++-- .../userManagementController.js | 16 +- .../userManagement/userManagementService.js | 12 +- PlexRequests.UI/Jobs/Scheduler.cs | 96 +++-- .../Models/SearchMovieViewModel.cs | 99 ++--- .../Models/UserManagementUsersViewModel.cs | 18 + PlexRequests.UI/Modules/AdminModule.cs | 24 +- .../Modules/UserManagementModule.cs | 65 +++- PlexRequests.UI/Startup.cs | 33 +- .../Views/Admin/NewsletterSettings.cshtml | 22 +- .../Views/Admin/SchedulerSettings.cshtml | 7 +- PlexRequests.UI/Views/Search/Index.cshtml | 25 +- .../Views/UserManagement/Index.cshtml | 4 +- 26 files changed, 888 insertions(+), 389 deletions(-) create mode 100644 PlexRequests.Core.Migration/app.config create mode 100644 PlexRequests.Core.Migration/job_scheduling_data_2_0.xsd create mode 100644 PlexRequests.Core.Migration/packages.config diff --git a/PlexRequests.Core.Migration/Migrations/Version195.cs b/PlexRequests.Core.Migration/Migrations/Version195.cs index 01724f3a0..24ddf9ea1 100644 --- a/PlexRequests.Core.Migration/Migrations/Version195.cs +++ b/PlexRequests.Core.Migration/Migrations/Version195.cs @@ -25,39 +25,76 @@ // ************************************************************************/ #endregion +using System; using System.Data; using PlexRequests.Core.SettingModels; +using PlexRequests.Store; +using Quartz; namespace PlexRequests.Core.Migration.Migrations { [Migration(1950, "v1.9.5.0")] public class Version195 : BaseMigration, IMigration { - public Version195(ISettingsService plexRequestSettings, ISettingsService news) + public Version195(ISettingsService plexRequestSettings, ISettingsService news, ISettingsService jobs) { PlexRequestSettings = plexRequestSettings; NewsletterSettings = news; + Jobs = jobs; } public int Version => 1950; private ISettingsService PlexRequestSettings { get; } private ISettingsService NewsletterSettings { get; } + private ISettingsService Jobs { get; } public void Start(IDbConnection con) + { + UpdateApplicationSettings(); + UpdateDb(con); + + UpdateSchema(con, Version); + } + + private void UpdateDb(IDbConnection con) + { + + } + + private void UpdateApplicationSettings() { var plex = PlexRequestSettings.GetSettings(); - + var jobSettings = Jobs.GetSettings(); var newsLetter = NewsletterSettings.GetSettings(); + + newsLetter.SendToPlexUsers = true; + UpdateScheduledSettings(jobSettings); + if (plex.SendRecentlyAddedEmail) { newsLetter.SendRecentlyAddedEmail = plex.SendRecentlyAddedEmail; plex.SendRecentlyAddedEmail = false; - PlexRequestSettings.SaveSettings(plex); - NewsletterSettings.SaveSettings(newsLetter); } - UpdateSchema(con, Version); + + NewsletterSettings.SaveSettings(newsLetter); + Jobs.SaveSettings(jobSettings); + } + + private void UpdateScheduledSettings(ScheduledJobsSettings settings) + { + settings.PlexAvailabilityChecker = 60; + settings.SickRageCacher = 60; + settings.SonarrCacher = 60; + settings.CouchPotatoCacher = 60; + settings.StoreBackup = 24; + settings.StoreCleanup = 24; + settings.UserRequestLimitResetter = 12; + settings.PlexEpisodeCacher = 12; + + var cron = (Quartz.Impl.Triggers.CronTriggerImpl)CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(DayOfWeek.Friday, 7, 0).Build(); + settings.RecentlyAddedCron = cron.CronExpressionString; // Weekly CRON at 7 am on Mondays } } } \ No newline at end of file diff --git a/PlexRequests.Core.Migration/PlexRequests.Core.Migration.csproj b/PlexRequests.Core.Migration/PlexRequests.Core.Migration.csproj index bb82fe012..a92ae74d5 100644 --- a/PlexRequests.Core.Migration/PlexRequests.Core.Migration.csproj +++ b/PlexRequests.Core.Migration/PlexRequests.Core.Migration.csproj @@ -31,12 +31,24 @@ 4 + + ..\packages\Common.Logging.3.0.0\lib\net40\Common.Logging.dll + True + + + ..\packages\Common.Logging.Core.3.0.0\lib\net40\Common.Logging.Core.dll + True + ..\Assemblies\Mono.Data.Sqlite.dll ..\packages\Ninject.3.2.0.0\lib\net45-full\Ninject.dll + + ..\packages\Quartz.2.3.3\lib\net40\Quartz.dll + True + @@ -66,6 +78,13 @@ PlexRequests.Store + + + + Designer + + + -
- +
+