From 7ef2a1679da4ce126c593999018bdf6c33ce6d26 Mon Sep 17 00:00:00 2001 From: Kenton Royal Date: Sat, 25 Aug 2018 01:20:36 +0100 Subject: [PATCH] Add dummy for request counter --- src/Ombi.Core/Engine/MovieRequestEngine.cs | 4 +++- .../app/interfaces/IRemainingRequests.ts | 5 +++++ .../app/requests/movierequests.component.ts | 4 ++++ .../app/search/moviesearch.component.html | 11 +++++++++-- .../app/search/moviesearch.component.ts | 18 +++++++++++++++--- .../ClientApp/app/services/request.service.ts | 5 +++++ src/Ombi/Controllers/RequestController.cs | 10 ++++++++++ 7 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 src/Ombi/ClientApp/app/interfaces/IRemainingRequests.ts diff --git a/src/Ombi.Core/Engine/MovieRequestEngine.cs b/src/Ombi.Core/Engine/MovieRequestEngine.cs index 7e0b61bd8..a1c0b16cf 100644 --- a/src/Ombi.Core/Engine/MovieRequestEngine.cs +++ b/src/Ombi.Core/Engine/MovieRequestEngine.cs @@ -489,7 +489,9 @@ namespace Ombi.Core.Engine { return new RequestQuotaCountModel() { - HasLimit = false, + HasLimit = true, + Limit = 5, + Remaining = 4, }; } } diff --git a/src/Ombi/ClientApp/app/interfaces/IRemainingRequests.ts b/src/Ombi/ClientApp/app/interfaces/IRemainingRequests.ts new file mode 100644 index 000000000..774f3c5e6 --- /dev/null +++ b/src/Ombi/ClientApp/app/interfaces/IRemainingRequests.ts @@ -0,0 +1,5 @@ +export interface IRemainingRequests { + hasLimit: boolean; + limit: number; + remaining: number; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/requests/movierequests.component.ts b/src/Ombi/ClientApp/app/requests/movierequests.component.ts index db7b400db..9495f0790 100644 --- a/src/Ombi/ClientApp/app/requests/movierequests.component.ts +++ b/src/Ombi/ClientApp/app/requests/movierequests.component.ts @@ -7,6 +7,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators"; import { AuthService } from "../auth/auth.service"; import { FilterType, IFilter, IIssueCategory, IMovieRequests, IPagenator, IRadarrProfile, IRadarrRootFolder, OrderType } from "../interfaces"; import { NotificationService, RadarrService, RequestService } from "../services"; +import { IRemainingRequests } from "../interfaces/IRemainingRequests"; @Component({ selector: "movie-requests", @@ -38,6 +39,8 @@ export class MovieRequestsComponent implements OnInit { public orderType: OrderType = OrderType.RequestedDateDesc; public OrderType = OrderType; + public remaining: IRemainingRequests; + public totalMovies: number = 100; private currentlyLoaded: number; private amountToLoad: number; @@ -80,6 +83,7 @@ export class MovieRequestsComponent implements OnInit { }; this.loadInit(); this.isAdmin = this.auth.hasRole("admin") || this.auth.hasRole("poweruser"); + } public paginate(event: IPagenator) { diff --git a/src/Ombi/ClientApp/app/search/moviesearch.component.html b/src/Ombi/ClientApp/app/search/moviesearch.component.html index 44dc345bc..2e6458eb5 100644 --- a/src/Ombi/ClientApp/app/search/moviesearch.component.html +++ b/src/Ombi/ClientApp/app/search/moviesearch.component.html @@ -1,5 +1,6 @@ 
+
@@ -18,8 +19,14 @@
-
-
+ +

+ {{remaining.remaining}}/{{remaining.limit}} requests remaining. +

+ +
+
+
diff --git a/src/Ombi/ClientApp/app/search/moviesearch.component.ts b/src/Ombi/ClientApp/app/search/moviesearch.component.ts index 824308b21..dd2621ae1 100644 --- a/src/Ombi/ClientApp/app/search/moviesearch.component.ts +++ b/src/Ombi/ClientApp/app/search/moviesearch.component.ts @@ -8,6 +8,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators"; import { AuthService } from "../auth/auth.service"; import { IIssueCategory, IRequestEngineResult, ISearchMovieResult } from "../interfaces"; import { NotificationService, RequestService, SearchService } from "../services"; +import { IRemainingRequests } from "../interfaces/IRemainingRequests"; @Component({ selector: "movie-search", @@ -19,6 +20,7 @@ export class MovieSearchComponent implements OnInit { public searchChanged: Subject = new Subject(); public movieResults: ISearchMovieResult[]; public result: IRequestEngineResult; + public remaining: IRemainingRequests; public searchApplied = false; @Input() public issueCategories: IIssueCategory[]; @@ -35,7 +37,6 @@ export class MovieSearchComponent implements OnInit { private notificationService: NotificationService, private authService: AuthService, private readonly translate: TranslateService, private sanitizer: DomSanitizer, private readonly platformLocation: PlatformLocation) { - this.searchChanged.pipe( debounceTime(600), // Wait Xms after the last event before emitting last event distinctUntilChanged(), // only emit if value is different from previous value @@ -69,10 +70,21 @@ export class MovieSearchComponent implements OnInit { result: false, errorMessage: "", }; - this.popularMovies(); - } + this.remaining = { + hasLimit: false, + limit: 0, + remaining: 0, + }; + this.popularMovies(); + + this.requestService.getRemainingMovieRequests().subscribe(remaining => { + this.remaining = remaining; + }); + + } public search(text: any) { + this.searchChanged.next(text.target.value); } diff --git a/src/Ombi/ClientApp/app/services/request.service.ts b/src/Ombi/ClientApp/app/services/request.service.ts index 48fa5622d..5345369e7 100644 --- a/src/Ombi/ClientApp/app/services/request.service.ts +++ b/src/Ombi/ClientApp/app/services/request.service.ts @@ -8,6 +8,7 @@ import { TreeNode } from "primeng/primeng"; import { FilterType, IChildRequests, IFilter, IMovieRequestModel, IMovieRequests, IMovieUpdateModel, IRequestEngineResult, IRequestsViewModel, ITvRequests, ITvUpdateModel, OrderType } from "../interfaces"; import { ITvRequestViewModel } from "../interfaces"; import { ServiceHelpers } from "./service.helpers"; +import { IRemainingRequests } from "../interfaces/IRemainingRequests"; @Injectable() export class RequestService extends ServiceHelpers { @@ -15,6 +16,10 @@ export class RequestService extends ServiceHelpers { super(http, "/api/v1/Request/", platformLocation); } + public getRemainingMovieRequests(): Observable { + return this.http.get(`${this.url}movie/remaining`, {headers: this.headers}); + } + public requestMovie(movie: IMovieRequestModel): Observable { return this.http.post(`${this.url}Movie/`, JSON.stringify(movie), {headers: this.headers}); } diff --git a/src/Ombi/Controllers/RequestController.cs b/src/Ombi/Controllers/RequestController.cs index d794f6001..71d09b2ef 100644 --- a/src/Ombi/Controllers/RequestController.cs +++ b/src/Ombi/Controllers/RequestController.cs @@ -12,6 +12,7 @@ using Ombi.Attributes; using Ombi.Core.Models.UI; using Ombi.Models; using Ombi.Store.Entities; +using Ombi.Core.Models; namespace Ombi.Controllers { @@ -464,5 +465,14 @@ namespace Ombi.Controllers await TvRequestEngine.UnSubscribeRequest(requestId, RequestType.TvShow); return true; } + + /// + /// Gets model containing remaining number of requests. + /// + [HttpGet("movie/remaining")] + public async Task GetRemainingRequests() + { + return await MovieRequestEngine.GetRemainingRequests(); + } } } \ No newline at end of file