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 }}
-
+
+
+ {{'Common.Denied' | translate }}
+
{{