diff --git a/PlexRequests.Helpers.Tests/TypeHelperTests.cs b/PlexRequests.Helpers.Tests/TypeHelperTests.cs index 1d93c375f..7aff9b29c 100644 --- a/PlexRequests.Helpers.Tests/TypeHelperTests.cs +++ b/PlexRequests.Helpers.Tests/TypeHelperTests.cs @@ -65,7 +65,7 @@ namespace PlexRequests.Helpers.Tests "ProviderId", "ImdbId", "TvDbId", "Overview", "Title", "PosterPath", "ReleaseDate", "Type", "Status", "Approved", "RequestedBy", "RequestedDate", "Available", "Issues", "OtherMessage", "AdminNote", "SeasonList", "SeasonCount", "SeasonsRequested", "MusicBrainzId", "RequestedUsers","ArtistName", - "ArtistId","IssueId","Episodes","AllUsers","CanApprove","Id" + "ArtistId","IssueId","Episodes", "Denied", "DeniedReason", "AllUsers","CanApprove","Id", }).SetName("Requested Model"); } } diff --git a/PlexRequests.UI/Helpers/TvSender.cs b/PlexRequests.UI/Helpers/TvSender.cs index 05b2799ab..a376cb912 100644 --- a/PlexRequests.UI/Helpers/TvSender.cs +++ b/PlexRequests.UI/Helpers/TvSender.cs @@ -35,6 +35,7 @@ using PlexRequests.Api.Models.Sonarr; using PlexRequests.Core.SettingModels; using PlexRequests.Store; using System.Linq; +using System.Linq.Expressions; using System.Threading.Tasks; using PlexRequests.Helpers.Exceptions; @@ -70,7 +71,7 @@ namespace PlexRequests.UI.Helpers { int.TryParse(sonarrSettings.QualityProfile, out qualityProfile); } - + var series = await GetSonarrSeries(sonarrSettings, model.ProviderId); if (episodeRequest) @@ -81,7 +82,7 @@ namespace PlexRequests.UI.Helpers // Series Exists // Request the episodes in the existing series await RequestEpisodesWithExistingSeries(model, series, sonarrSettings); - return new SonarrAddSeries {title = series.title}; + return new SonarrAddSeries { title = series.title }; } @@ -93,7 +94,7 @@ namespace PlexRequests.UI.Helpers // Get the series that was just added series = await GetSonarrSeries(sonarrSettings, model.ProviderId); - series.monitored = false; // Un-monitor the series + series.monitored = true; // We want to make sure we are monitoring the series // Un-monitor all seasons foreach (var season in series.seasons) @@ -113,15 +114,44 @@ namespace PlexRequests.UI.Helpers if (series != null) { - // Monitor the seasons that we have chosen - foreach (var season in series.seasons) + var requestAll = model.SeasonsRequested.Equals("All", StringComparison.CurrentCultureIgnoreCase); + var first = model.SeasonsRequested.Equals("First", StringComparison.CurrentCultureIgnoreCase); + var latest = model.SeasonsRequested.Equals("Latest", StringComparison.CurrentCultureIgnoreCase); + + if (model.SeasonList.Any()) { - if (model.SeasonList.Contains(season.seasonNumber)) + // Monitor the seasons that we have chosen + foreach (var season in series.seasons) + { + if (model.SeasonList.Contains(season.seasonNumber)) + { + season.monitored = true; + } + } + } + + if (requestAll) + { + // Monitor all seasons + foreach (var season in series.seasons) { season.monitored = true; } } + if (first) + { + var firstSeries = series?.seasons?.OrderBy(x => x.seasonNumber)?.FirstOrDefault() ?? new Season(); + firstSeries.monitored = true; + } + + if (latest) + { + var lastSeries = series?.seasons?.OrderByDescending(x => x.seasonNumber)?.FirstOrDefault() ?? new Season(); + lastSeries.monitored = true; + } + + // Update the series in sonarr with the new monitored status SonarrApi.UpdateSeries(series, sonarrSettings.ApiKey, sonarrSettings.FullUri); await RequestAllEpisodesInASeasonWithExistingSeries(model, series, sonarrSettings); @@ -201,7 +231,7 @@ namespace PlexRequests.UI.Helpers var tasks = new List(); foreach (var r in episodes) { - if(r.monitored || r.hasFile) // If it's already montiored or has the file, there is no point in updating it + if (r.monitored || r.hasFile) // If it's already montiored or has the file, there is no point in updating it { continue; } diff --git a/PlexRequests.UI/Modules/BaseAuthModule.cs b/PlexRequests.UI/Modules/BaseAuthModule.cs index d5dde01c9..d3d3de5d9 100644 --- a/PlexRequests.UI/Modules/BaseAuthModule.cs +++ b/PlexRequests.UI/Modules/BaseAuthModule.cs @@ -53,14 +53,15 @@ namespace PlexRequests.UI.Modules private Response CheckAuth() { var settings = PlexRequestSettings.GetSettings(); + + var baseUrl = settings.BaseUrl; + // Have we been through the wizard? if (!settings.Wizard) { - return Context.GetRedirect("~/wizard"); + return Context.GetRedirect(string.IsNullOrEmpty(baseUrl) ? "~/wizard" : $"~/{baseUrl}/wizard"); } - var baseUrl = settings.BaseUrl; - var redirectPath = string.IsNullOrEmpty(baseUrl) ? "~/userlogin" : $"~/{baseUrl}/userlogin"; return Session[SessionKeys.UsernameKey] == null @@ -68,4 +69,4 @@ namespace PlexRequests.UI.Modules : null; } } -} \ No newline at end of file +}