From 0523c9a3f157b81ce3dc8b526bdcba50a2d0b2ce Mon Sep 17 00:00:00 2001 From: sephrat <34862846+sephrat@users.noreply.github.com> Date: Thu, 7 Apr 2022 18:43:13 +0200 Subject: [PATCH] Enhance display of denied TV shows --- src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs | 3 +++ src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs | 1 + .../Models/Search/V2/SearchFullInfoTvShowViewModel.cs | 1 + src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs | 6 ++++++ .../app/discover/components/card/discover-card.component.ts | 1 + src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts | 3 +++ .../media-details/components/tv/tv-details.component.html | 6 +++++- 7 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs b/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs index 46cd44bf1..1ebfe0003 100644 --- a/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs +++ b/src/Ombi.Core/Engine/V2/TvSearchEngineV2.cs @@ -308,6 +308,9 @@ namespace Ombi.Core.Engine.V2 item.PartlyAvailable = oldModel.PartlyAvailable; item.Requested = oldModel.Requested; item.Available = oldModel.Available; + item.Denied = oldModel.Denied; + item.DeniedReason = oldModel.DeniedReason; + item.FullyDenied = oldModel.FullyDenied; item.Approved = oldModel.Approved; item.SeasonRequests = oldModel.SeasonRequests; item.RequestId = oldModel.RequestId; diff --git a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs index 1a3f47175..96a98f5d7 100644 --- a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs +++ b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs @@ -56,6 +56,7 @@ namespace Ombi.Core.Models.Search public bool FullyAvailable { get; set; } // We only have some episodes public bool PartlyAvailable { get; set; } + public bool FullyDenied { get; set; } public override RequestType Type => RequestType.TvShow; public string BackdropPath { get; set; } diff --git a/src/Ombi.Core/Models/Search/V2/SearchFullInfoTvShowViewModel.cs b/src/Ombi.Core/Models/Search/V2/SearchFullInfoTvShowViewModel.cs index 0902c1fb1..179178c3e 100644 --- a/src/Ombi.Core/Models/Search/V2/SearchFullInfoTvShowViewModel.cs +++ b/src/Ombi.Core/Models/Search/V2/SearchFullInfoTvShowViewModel.cs @@ -48,6 +48,7 @@ namespace Ombi.Core.Models.Search.V2 public bool FullyAvailable { get; set; } // We only have some episodes public bool PartlyAvailable { get; set; } + public bool FullyDenied { get; set; } public override RequestType Type => RequestType.TvShow; } diff --git a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs index a9bf13265..b3e08257e 100644 --- a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs @@ -62,6 +62,7 @@ namespace Ombi.Core.Rule.Rules.Search request.Requested = true; request.Approved = tvRequests.ChildRequests.Any(x => x.Approved); request.Denied = tvRequests.ChildRequests.Any(x => x.Denied ?? false); + request.DeniedReason = tvRequests.ChildRequests.FirstOrDefault(x => x.Denied == true).DeniedReason; // Let's modify the seasonsrequested to reflect what we have requested... foreach (var season in request.SeasonRequests) @@ -100,6 +101,11 @@ namespace Ombi.Core.Rule.Rules.Search request.PartlyAvailable = true; } + if (request.SeasonRequests.Any() && request.SeasonRequests.All(x => x.Episodes.All(e => e.Denied ?? false))) + { + request.FullyDenied = true; + } + var hasUnairedRequests = request.SeasonRequests.Any() && request.SeasonRequests.All(x => x.Episodes.Any(e => e.AirDate >= DateTime.UtcNow)); if (request.FullyAvailable) diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts index 48ac6feed..4af3fdabb 100644 --- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts +++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card.component.ts @@ -206,6 +206,7 @@ export class DiscoverCardComponent implements OnInit { this.result.overview = updated.overview; this.result.approved = updated.approved; this.result.available = updated.fullyAvailable; + this.result.denied = updated.fullyDenied; this.fullyLoaded = true; } diff --git a/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts b/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts index 8ea7bacc5..ad15306f4 100644 --- a/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts +++ b/src/Ombi/ClientApp/src/app/interfaces/ISearchTvResultV2.ts @@ -25,6 +25,9 @@ export interface ISearchTvResultV2 { seasonRequests: INewSeasonRequests[]; requestAll: boolean; approved: boolean; + denied: boolean; + deniedReason: string; + fullyDenied: boolean; requested: boolean; available: boolean; plexUrl: string; diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html index 9397e07b8..091f38f29 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/tv-details.component.html @@ -65,7 +65,7 @@ (click)="request()"> {{ 'Common.Request' | translate }} - @@ -82,6 +82,10 @@ class="btn-spacing" color="accent" [disabled]> {{'Common.PartiallyAvailable' | translate }} + +