diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index df3ff79e2..0f5502f27 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -108,7 +108,16 @@ namespace Ombi.Core.Engine // Remove the ID since this is a new child tvBuilder.ChildRequest.Id = 0; - return await AddExistingRequest(tvBuilder.ChildRequest, existingRequest); + if (!tvBuilder.ChildRequest.SeasonRequests.Any()) + { + // Looks like we have removed them all! They were all duplicates... + return new RequestEngineResult + { + RequestAdded = false, + ErrorMessage = "They have already been requestsed" + }; + } + return await AddExistingRequest(tvBuilder.ChildRequest, existingRequest); } // This is a new request diff --git a/src/Ombi.Core/Engine/TvSearchEngine.cs b/src/Ombi.Core/Engine/TvSearchEngine.cs index 862dde5a5..34b49289c 100644 --- a/src/Ombi.Core/Engine/TvSearchEngine.cs +++ b/src/Ombi.Core/Engine/TvSearchEngine.cs @@ -202,7 +202,6 @@ namespace Ombi.Core.Engine } } } - } if (plexSettings.Enable) { @@ -230,12 +229,15 @@ namespace Ombi.Core.Engine } } } + } + if (item.SeasonRequests.Any() && item.SeasonRequests.All(x => x.Episodes.All(e => e.Approved))) + { + item.FullyAvailable = true; } if (item.Id > 0) { - // TODO need to check if the episodes are available var tvdbid = item.Id; if (existingRequests.ContainsKey(tvdbid)) { @@ -269,6 +271,7 @@ namespace Ombi.Core.Engine } } } + // TODO CHECK SONARR/RADARR //if (sonarrCached.Select(x => x.TvdbId).Contains(tvdbid) || sickRageCache.Contains(tvdbid)) // // compare to the sonarr/sickrage db //{ diff --git a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs index 4f778d8ea..c7bbac246 100644 --- a/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs +++ b/src/Ombi.Core/Models/Search/SearchTvShowViewModel.cs @@ -49,5 +49,10 @@ namespace Ombi.Core.Models.Search public bool FirstSeason { get; set; } public bool LatestSeason { get; set; } + + /// + /// This is where we have EVERY Episode for that series + /// + public bool FullyAvailable { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs b/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs index f7eb32ded..85e6e053e 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs @@ -34,7 +34,7 @@ namespace Ombi.Schedule.Jobs.Plex public async Task Start() { var userManagementSettings = await _userManagementSettings.GetSettingsAsync(); - if (!userManagementSettings.ImportMediaServerUsers) + if (!userManagementSettings.ImportPlexUsers) { return; } diff --git a/src/Ombi.Settings/Settings/Models/OmbiSettings.cs b/src/Ombi.Settings/Settings/Models/OmbiSettings.cs index da13109b0..9cacbd8e2 100644 --- a/src/Ombi.Settings/Settings/Models/OmbiSettings.cs +++ b/src/Ombi.Settings/Settings/Models/OmbiSettings.cs @@ -2,7 +2,7 @@ { public class OmbiSettings : Models.Settings { - //public string BaseUrl { get; set; } + public string BaseUrl { get; set; } public bool CollectAnalyticData { get; set; } public bool Wizard { get; set; } public string ApiKey { get; set; } diff --git a/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs b/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs index 1428801c2..32aa3c5c1 100644 --- a/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs +++ b/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs @@ -4,7 +4,8 @@ namespace Ombi.Settings.Settings.Models { public class UserManagementSettings : Settings { - public bool ImportMediaServerUsers { get; set; } + public bool ImportPlexUsers { get; set; } + public bool ImportEmbyUsers { get; set; } public List DefaultRoles { get; set; } } } \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/interfaces/ICommon.ts b/src/Ombi/ClientApp/app/interfaces/ICommon.ts index 4b2f92fd9..17a7f0546 100644 --- a/src/Ombi/ClientApp/app/interfaces/ICommon.ts +++ b/src/Ombi/ClientApp/app/interfaces/ICommon.ts @@ -16,3 +16,8 @@ export interface IQuality { id: number; name: string; } + +export interface ICheckbox { + value: string; + enabled: boolean; +} diff --git a/src/Ombi/ClientApp/app/interfaces/ISearchTvResult.ts b/src/Ombi/ClientApp/app/interfaces/ISearchTvResult.ts index e4895da1d..5ed9567f5 100644 --- a/src/Ombi/ClientApp/app/interfaces/ISearchTvResult.ts +++ b/src/Ombi/ClientApp/app/interfaces/ISearchTvResult.ts @@ -1,4 +1,4 @@ -import { ISeasonRequests } from "./IRequestModel"; +import { INewSeasonRequests } from "./IRequestModel"; export interface ISearchTvResult { id: number; @@ -21,7 +21,7 @@ export interface ISearchTvResult { siteRating: number; trailer: string; homepage: string; - seasonsRequests: ISeasonRequests[]; + seasonRequests: INewSeasonRequests[]; requestAll: boolean; approved: boolean; requested: boolean; diff --git a/src/Ombi/ClientApp/app/interfaces/ISettings.ts b/src/Ombi/ClientApp/app/interfaces/ISettings.ts index e4bb69391..9a10e5388 100644 --- a/src/Ombi/ClientApp/app/interfaces/ISettings.ts +++ b/src/Ombi/ClientApp/app/interfaces/ISettings.ts @@ -1,4 +1,5 @@ import { ISettings } from "./ICommon"; +import { ICheckbox } from "./index"; export interface IExternalSettings extends ISettings { ssl: boolean; @@ -9,7 +10,7 @@ export interface IExternalSettings extends ISettings { export interface IOmbiSettings extends ISettings { port: number; - //baseUrl:string, + baseUrl: string; collectAnalyticData: boolean; wizard: boolean; apiKey: string; @@ -102,6 +103,12 @@ export interface IAuthenticationSettings extends ISettings { requireUppercase: boolean; } +export interface IUserManagementSettings extends ISettings { + importPlexUsers: boolean; + importEmbyUsers: boolean; + defaultClaims: ICheckbox[]; +} + export interface IAbout { version: string; branch: string; diff --git a/src/Ombi/ClientApp/app/interfaces/IUser.ts b/src/Ombi/ClientApp/app/interfaces/IUser.ts index 4e8fd40b0..5e42afafe 100644 --- a/src/Ombi/ClientApp/app/interfaces/IUser.ts +++ b/src/Ombi/ClientApp/app/interfaces/IUser.ts @@ -1,4 +1,6 @@ -export interface IUser { +import { ICheckbox } from "./index"; + +export interface IUser { id: string; username: string; alias: string; @@ -17,11 +19,6 @@ export enum UserType { EmbyUser = 3, } -export interface ICheckbox { - value: string; - enabled: boolean; -} - export interface IIdentityResult { errors: string[]; successful: boolean; diff --git a/src/Ombi/ClientApp/app/search/seriesinformation.component.ts b/src/Ombi/ClientApp/app/search/seriesinformation.component.ts index 4b68ba305..8fb6c1650 100644 --- a/src/Ombi/ClientApp/app/search/seriesinformation.component.ts +++ b/src/Ombi/ClientApp/app/search/seriesinformation.component.ts @@ -46,8 +46,15 @@ export class SeriesInformationComponent implements OnInit, OnDestroy { if (this.result.requestAdded) { this.notificationService.success("Request Added", `Request for ${this.series.title} has been added successfully`); + + this.series.seasonRequests.forEach((season) => { + season.episodes.forEach((ep) => { + ep.selected = false; + }); + }); + } else { - this.notificationService.warning("Request Added", this.result.message); + this.notificationService.warning("Request Added", this.result.errorMessage ? this.result.errorMessage : this.result.message); } }); } diff --git a/src/Ombi/ClientApp/app/search/tvsearch.component.html b/src/Ombi/ClientApp/app/search/tvsearch.component.html index a6e6ae7fb..06a261720 100644 --- a/src/Ombi/ClientApp/app/search/tvsearch.component.html +++ b/src/Ombi/ClientApp/app/search/tvsearch.component.html @@ -80,24 +80,7 @@
- - - - \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/settings/ombi/ombi.component.ts b/src/Ombi/ClientApp/app/settings/ombi/ombi.component.ts index 49075a1dc..b481dd1bd 100644 --- a/src/Ombi/ClientApp/app/settings/ombi/ombi.component.ts +++ b/src/Ombi/ClientApp/app/settings/ombi/ombi.component.ts @@ -23,6 +23,7 @@ export class OmbiComponent implements OnInit { apiKey: [x.apiKey], externalUrl: [x.externalUrl], allowExternalUsersToAuthenticate: [x.allowExternalUsersToAuthenticate], + baseUrl: [x.baseUrl], }); }); } diff --git a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html index 3a5048468..813b8c49d 100644 --- a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html +++ b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html @@ -1,6 +1,5 @@