From 515312427eb7a1f2162708f05f3b9bed851d4bde Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Tue, 13 Jun 2017 14:05:23 +0100 Subject: [PATCH] Some more #865 --- .../Rule/Request/AutoApproveRuleTests.cs | 1 + src/Ombi.Core/Engine/TvRequestEngine.cs | 4 +- .../Rule/Rules/Request/AutoApproveRule.cs | 9 ++-- src/Ombi.Schedule/Jobs/PlexContentCacher.cs | 49 ++----------------- src/Ombi.Store/Entities/PlexContent.cs | 5 +- src/Ombi.Store/Entities/RequestHistory.cs | 15 ++++++ src/Ombi.Store/SqlTables.sql | 15 +++++- 7 files changed, 43 insertions(+), 55 deletions(-) create mode 100644 src/Ombi.Store/Entities/RequestHistory.cs diff --git a/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs index 07d438278..e2041a57c 100644 --- a/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs @@ -3,6 +3,7 @@ using Moq; using Ombi.Core.Claims; using Ombi.Core.Models.Requests; using Ombi.Core.Rule.Rules; +using Ombi.Core.Rule.Rules.Request; using Xunit; namespace Ombi.Core.Tests.Rule diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index 5768ad6a7..6ff32684c 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -184,6 +184,8 @@ namespace Ombi.Core.Engine var results = allRequests.FirstOrDefault(x => x.Id == request.Id); results = Mapper.Map(request); + // TODO need to check if we need to approve any child requests since they may have updated + var model = TvRequestService.UpdateRequest(results); return model; } @@ -211,7 +213,7 @@ namespace Ombi.Core.Engine existingRequest.ChildRequests.AddRange(newRequest.ChildRequests); TvRequestService.UpdateRequest(existingRequest); - if (ShouldAutoApprove(RequestType.TvShow)) + if (newRequest.Approved) // The auto approve rule { // TODO Auto Approval Code } diff --git a/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs b/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs index 3aa4a6b5a..78291e771 100644 --- a/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs +++ b/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs @@ -1,11 +1,10 @@ -using Ombi.Core.Claims; +using System.Security.Principal; +using Ombi.Core.Claims; using Ombi.Core.Models.Requests; -using Ombi.Core.Rules; -using Ombi.Store.Entities; -using System.Security.Principal; using Ombi.Core.Rule.Interfaces; +using Ombi.Store.Entities; -namespace Ombi.Core.Rule.Rules +namespace Ombi.Core.Rule.Rules.Request { public class AutoApproveRule : BaseRequestRule, IRequestRules { diff --git a/src/Ombi.Schedule/Jobs/PlexContentCacher.cs b/src/Ombi.Schedule/Jobs/PlexContentCacher.cs index 249b22869..c890939dc 100644 --- a/src/Ombi.Schedule/Jobs/PlexContentCacher.cs +++ b/src/Ombi.Schedule/Jobs/PlexContentCacher.cs @@ -77,45 +77,6 @@ namespace Ombi.Schedule.Jobs Logger.LogWarning(LoggingEvents.CacherException, e, "Exception thrown when attempting to cache the Plex Content"); } } - //private List CachedLibraries(PlexSettings plexSettings) - //{ - // var results = new List(); - - // results = GetLibraries(plexSettings); - // foreach (PlexLibraries t in results) - // { - // foreach (var t1 in t.MediaContainer.Directory) - // { - // var currentItem = t1; - // var metaData = PlexApi.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, - // currentItem.ratingKey).Result; - - // // Get the seasons for each show - // if (currentItem.type.Equals(PlexMediaType.Show.ToString(), StringComparison.CurrentCultureIgnoreCase)) - // { - // var seasons = PlexApi.GetSeasons(plexSettings.PlexAuthToken, plexSettings.FullUri, - // currentItem.ratingKey).Result; - - // // We do not want "all episodes" this as a season - // var filtered = seasons.MediaContainer.Directory.Where(x => !x.title.Equals("All episodes", StringComparison.CurrentCultureIgnoreCase)); - - // t1.seasons.AddRange(filtered); - // } - - // var providerId = PlexHelper.GetProviderIdFromPlexGuid(metaData.MediaContainer); - // t1.providerId = providerId; - // } - // foreach (Video t1 in t.Video) - // { - // var currentItem = t1; - // var metaData = PlexApi.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, - // currentItem.RatingKey); - // var providerId = PlexHelper.GetProviderIdFromPlexGuid(metaData.Video.Guid); - // t1.ProviderId = providerId; - // } - // } - - //} private async Task StartTheCache(PlexSettings plexSettings) { @@ -154,18 +115,16 @@ namespace Ombi.Schedule.Jobs var itemAdded = false; foreach (var season in seasonsContent) { - var seasonExists = existingContent.Seasons.Where(x => x.SeasonKey == season.SeasonKey); + var seasonExists = existingContent.Seasons.FirstOrDefault(x => x.SeasonKey == season.SeasonKey); if (seasonExists != null) { // We already have this season continue; } - else - { - existingContent.Seasons.Add(season); - itemAdded = true; - } + + existingContent.Seasons.Add(season); + itemAdded = true; } if (itemAdded) await Repo.Update(existingContent); diff --git a/src/Ombi.Store/Entities/PlexContent.cs b/src/Ombi.Store/Entities/PlexContent.cs index f5efa2f5d..211b2e611 100644 --- a/src/Ombi.Store/Entities/PlexContent.cs +++ b/src/Ombi.Store/Entities/PlexContent.cs @@ -44,7 +44,7 @@ namespace Ombi.Store.Entities /// /// Only used for TV Shows /// - public virtual ICollection Seasons { get; set; } + public virtual ICollection Seasons { get; set; } /// /// Plex's internal ID for this item @@ -53,7 +53,8 @@ namespace Ombi.Store.Entities public DateTime AddedAt { get; set; } } - public class SeasonsContent : Entity + [Table("PlexSeasonsContent")] + public class PlexSeasonsContent : Entity { public int PlexContentId { get; set; } public int SeasonNumber { get; set; } diff --git a/src/Ombi.Store/Entities/RequestHistory.cs b/src/Ombi.Store/Entities/RequestHistory.cs new file mode 100644 index 000000000..c8f3cc2c1 --- /dev/null +++ b/src/Ombi.Store/Entities/RequestHistory.cs @@ -0,0 +1,15 @@ +using System; + +namespace Ombi.Store.Entities +{ + public class RequestHistory : Entity + { + public int UserId { get; set; } + public RequestType Type { get; set; } + public DateTime RequestedDate { get; set; } + public int RequestId { get; set; } + + public virtual RequestBlobs Request { get; set; } + public virtual User User { get; set; } + } +} \ No newline at end of file diff --git a/src/Ombi.Store/SqlTables.sql b/src/Ombi.Store/SqlTables.sql index 3e3f2590a..99c020f87 100644 --- a/src/Ombi.Store/SqlTables.sql +++ b/src/Ombi.Store/SqlTables.sql @@ -23,9 +23,10 @@ CREATE TABLE IF NOT EXISTS RadarrCache TheMovieDbId INTEGER NOT NULL ); -CREATE TABLE IF NOT EXISTS SeasonsContent +CREATE TABLE IF NOT EXISTS PlexSeasonsContent ( Id INTEGER PRIMARY KEY AUTOINCREMENT, + PlexContentId integer not null, SeasonNumber INTEGER NOT NULL, SeasonKey INTEGER NOT NULL, ParentKey INTEGER NOT NULL @@ -52,4 +53,14 @@ CREATE TABLE IF NOT EXISTS Users Salt BLOB NULL, UserType INTEGER NOT NULL -); \ No newline at end of file +); + +CREATE TABLE IF NOT EXISTS RequestHistory +{ + + Id INTEGER PRIMARY KEY AUTOINCREMENT, + Type INTEGER NOT NULL, + RequestedDate varchar(50) NOT NULL, + RequestId INTEGER NOT NULL + +} \ No newline at end of file