From 0b2e488e8f42f90e63065a6e174d48d9d3a3773b Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Tue, 24 Apr 2018 14:44:22 +0100 Subject: [PATCH] Added paging to the TV Requests page --- .../Engine/Interfaces/IMovieRequestEngine.cs | 1 + .../Engine/Interfaces/IRequestEngine.cs | 1 + src/Ombi.Core/Engine/MovieRequestEngine.cs | 13 +++++++++ src/Ombi.Core/Engine/TvRequestEngine.cs | 17 ++++++++++-- .../app/requests/movierequests.component.html | 2 +- .../app/requests/movierequests.component.ts | 2 ++ .../app/requests/tvrequests.component.html | 1 + .../app/requests/tvrequests.component.ts | 27 +++++++++---------- .../ClientApp/app/services/request.service.ts | 8 ++++++ src/Ombi/Controllers/RequestController.cs | 18 +++++++++++++ 10 files changed, 73 insertions(+), 17 deletions(-) diff --git a/src/Ombi.Core/Engine/Interfaces/IMovieRequestEngine.cs b/src/Ombi.Core/Engine/Interfaces/IMovieRequestEngine.cs index bfeb4fbe0..2f765fede 100644 --- a/src/Ombi.Core/Engine/Interfaces/IMovieRequestEngine.cs +++ b/src/Ombi.Core/Engine/Interfaces/IMovieRequestEngine.cs @@ -18,5 +18,6 @@ namespace Ombi.Core.Engine.Interfaces Task ApproveMovieById(int requestId); Task DenyMovieById(int modelId); Task> Filter(FilterViewModel vm); + } } \ No newline at end of file diff --git a/src/Ombi.Core/Engine/Interfaces/IRequestEngine.cs b/src/Ombi.Core/Engine/Interfaces/IRequestEngine.cs index bfb8be4e8..5dbf6e449 100644 --- a/src/Ombi.Core/Engine/Interfaces/IRequestEngine.cs +++ b/src/Ombi.Core/Engine/Interfaces/IRequestEngine.cs @@ -17,5 +17,6 @@ namespace Ombi.Core.Engine.Interfaces Task MarkUnavailable(int modelId); Task MarkAvailable(int modelId); + Task GetTotal(); } } \ No newline at end of file diff --git a/src/Ombi.Core/Engine/MovieRequestEngine.cs b/src/Ombi.Core/Engine/MovieRequestEngine.cs index f4b0ee48c..0e47a28f6 100644 --- a/src/Ombi.Core/Engine/MovieRequestEngine.cs +++ b/src/Ombi.Core/Engine/MovieRequestEngine.cs @@ -144,6 +144,19 @@ namespace Ombi.Core.Engine return allRequests; } + public async Task GetTotal() + { + var shouldHide = await HideFromOtherUsers(); + if (shouldHide.Hide) + { + return await MovieRepository.GetWithUser(shouldHide.UserId).CountAsync(); + } + else + { + return await MovieRepository.GetWithUser().CountAsync(); + } + } + /// /// Gets the requests. /// diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index 44eec3fd1..c3f1139bf 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -130,7 +130,7 @@ namespace Ombi.Core.Engine var newRequest = tvBuilder.CreateNewRequest(tv); return await AddRequest(newRequest.NewRequest); } - + public async Task> GetRequests(int count, int position) { var shouldHide = await HideFromOtherUsers(); @@ -280,7 +280,7 @@ namespace Ombi.Core.Engine results.Background = PosterPathHelper.FixBackgroundPath(request.Background); results.QualityOverride = request.QualityOverride; results.RootFolder = request.RootFolder; - + await TvRepository.Update(results); return results; } @@ -432,6 +432,19 @@ namespace Ombi.Core.Engine }; } + public async Task GetTotal() + { + var shouldHide = await HideFromOtherUsers(); + if (shouldHide.Hide) + { + return await TvRepository.Get(shouldHide.UserId).CountAsync(); + } + else + { + return await TvRepository.Get().CountAsync(); + } + } + private async Task AddExistingRequest(ChildRequests newRequest, TvRequests existingRequest) { // Add the child diff --git a/src/Ombi/ClientApp/app/requests/movierequests.component.html b/src/Ombi/ClientApp/app/requests/movierequests.component.html index 19814b330..2431b5477 100644 --- a/src/Ombi/ClientApp/app/requests/movierequests.component.html +++ b/src/Ombi/ClientApp/app/requests/movierequests.component.html @@ -213,7 +213,7 @@ - + diff --git a/src/Ombi/ClientApp/app/requests/movierequests.component.ts b/src/Ombi/ClientApp/app/requests/movierequests.component.ts index bb6e17b7f..3339b6941 100644 --- a/src/Ombi/ClientApp/app/requests/movierequests.component.ts +++ b/src/Ombi/ClientApp/app/requests/movierequests.component.ts @@ -39,6 +39,7 @@ export class MovieRequestsComponent implements OnInit { public order: string = "requestedDate"; public reverse = false; + public totalMovies: number = 100; private currentlyLoaded: number; private amountToLoad: number; @@ -269,6 +270,7 @@ export class MovieRequestsComponent implements OnInit { } private loadInit() { + this.requestService.getTotalMovies().subscribe(x => this.totalMovies = x); this.requestService.getMovieRequests(this.amountToLoad, 0) .subscribe(x => { this.movieRequests = x; diff --git a/src/Ombi/ClientApp/app/requests/tvrequests.component.html b/src/Ombi/ClientApp/app/requests/tvrequests.component.html index 9a3c4d186..c15166e96 100644 --- a/src/Ombi/ClientApp/app/requests/tvrequests.component.html +++ b/src/Ombi/ClientApp/app/requests/tvrequests.component.html @@ -120,6 +120,7 @@ + { - this.tvRequests = x; - this.currentlyLoaded = this.currentlyLoaded + this.amountToLoad; - }); + public paginate(event: IPagenator) { + const skipAmount = event.first; + + this.requestService.getTvRequestsTree(this.amountToLoad, skipAmount) + .subscribe(x => { + this.tvRequests = x; + this.currentlyLoaded = this.currentlyLoaded + this.amountToLoad; + }); } public search(text: any) { @@ -197,6 +195,7 @@ export class TvRequestsComponent implements OnInit { } private loadInit() { + this.requestService.getTotalTv().subscribe(x => this.totalTv = x); this.requestService.getTvRequestsTree(this.amountToLoad, 0) .subscribe(x => { this.tvRequests = x; diff --git a/src/Ombi/ClientApp/app/services/request.service.ts b/src/Ombi/ClientApp/app/services/request.service.ts index a2757427d..c06b39434 100644 --- a/src/Ombi/ClientApp/app/services/request.service.ts +++ b/src/Ombi/ClientApp/app/services/request.service.ts @@ -20,6 +20,14 @@ export class RequestService extends ServiceHelpers { return this.http.post(`${this.url}Movie/`, JSON.stringify(movie), {headers: this.headers}); } + public getTotalMovies(): Observable { + return this.http.get(`${this.url}Movie/total`, {headers: this.headers}); + } + + public getTotalTv(): Observable { + return this.http.get(`${this.url}tv/total`, {headers: this.headers}); + } + public requestTv(tv: ITvRequestViewModel): Observable { return this.http.post(`${this.url}TV/`, JSON.stringify(tv), {headers: this.headers}); } diff --git a/src/Ombi/Controllers/RequestController.cs b/src/Ombi/Controllers/RequestController.cs index 59bd75606..5b83a7981 100644 --- a/src/Ombi/Controllers/RequestController.cs +++ b/src/Ombi/Controllers/RequestController.cs @@ -37,6 +37,15 @@ namespace Ombi.Controllers return await MovieRequestEngine.GetRequests(count, position); } + /// + /// Gets the total amount of movie requests. + /// + [HttpGet("movie/total")] + public async Task GetTotalMovies() + { + return await MovieRequestEngine.GetTotal(); + } + /// /// Gets all movie requests. /// @@ -146,6 +155,15 @@ namespace Ombi.Controllers return await TvRequestEngine.GetRequestsTreeNode(count, position); } + /// + /// Gets the total amount of TV requests. + /// + [HttpGet("tv/total")] + public async Task GetTotalTV() + { + return await TvRequestEngine.GetTotal(); + } + /// /// Gets the tv requests. ///