Add dummy for request counter

This commit is contained in:
Kenton Royal 2018-08-25 01:20:36 +01:00
parent 1bfbfdbe00
commit 7ef2a1679d
7 changed files with 51 additions and 6 deletions

View file

@ -489,7 +489,9 @@ namespace Ombi.Core.Engine
{ {
return new RequestQuotaCountModel() return new RequestQuotaCountModel()
{ {
HasLimit = false, HasLimit = true,
Limit = 5,
Remaining = 4,
}; };
} }
} }

View file

@ -0,0 +1,5 @@
export interface IRemainingRequests {
hasLimit: boolean;
limit: number;
remaining: number;
}

View file

@ -7,6 +7,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators";
import { AuthService } from "../auth/auth.service"; import { AuthService } from "../auth/auth.service";
import { FilterType, IFilter, IIssueCategory, IMovieRequests, IPagenator, IRadarrProfile, IRadarrRootFolder, OrderType } from "../interfaces"; import { FilterType, IFilter, IIssueCategory, IMovieRequests, IPagenator, IRadarrProfile, IRadarrRootFolder, OrderType } from "../interfaces";
import { NotificationService, RadarrService, RequestService } from "../services"; import { NotificationService, RadarrService, RequestService } from "../services";
import { IRemainingRequests } from "../interfaces/IRemainingRequests";
@Component({ @Component({
selector: "movie-requests", selector: "movie-requests",
@ -38,6 +39,8 @@ export class MovieRequestsComponent implements OnInit {
public orderType: OrderType = OrderType.RequestedDateDesc; public orderType: OrderType = OrderType.RequestedDateDesc;
public OrderType = OrderType; public OrderType = OrderType;
public remaining: IRemainingRequests;
public totalMovies: number = 100; public totalMovies: number = 100;
private currentlyLoaded: number; private currentlyLoaded: number;
private amountToLoad: number; private amountToLoad: number;
@ -80,6 +83,7 @@ export class MovieRequestsComponent implements OnInit {
}; };
this.loadInit(); this.loadInit();
this.isAdmin = this.auth.hasRole("admin") || this.auth.hasRole("poweruser"); this.isAdmin = this.auth.hasRole("admin") || this.auth.hasRole("poweruser");
} }
public paginate(event: IPagenator) { public paginate(event: IPagenator) {

View file

@ -1,5 +1,6 @@
<!-- Movie tab --> <!-- Movie tab -->
<div role="tabpanel" class="tab-pane active" id="MoviesTab"> <div role="tabpanel" class="tab-pane active" id="MoviesTab">
<div class="input-group"> <div class="input-group">
<input id="search" type="text" class="form-control form-control-custom form-control-search form-control-withbuttons" (keyup)="search($event)"> <input id="search" type="text" class="form-control form-control-custom form-control-search form-control-withbuttons" (keyup)="search($event)">
<div class="input-group-addon right-radius"> <div class="input-group-addon right-radius">
@ -18,8 +19,14 @@
<i class="fa fa-search"></i> <i class="fa fa-search"></i>
</div> </div>
</div> </div>
<br />
<br /> <h4 *ngIf="remaining?.hasLimit" id="remainingRequests" class="text-center">
{{remaining.remaining}}/{{remaining.limit}} requests remaining.
</h4>
<br *ngIf="!remaining?.hasLimit" />
<br *ngIf="!remaining?.hasLimit" />
<!-- Movie content --> <!-- Movie content -->
<div id="movieList"> <div id="movieList">
<div *ngIf="searchApplied && movieResults?.length <= 0" class='no-search-results'> <div *ngIf="searchApplied && movieResults?.length <= 0" class='no-search-results'>

View file

@ -8,6 +8,7 @@ import { debounceTime, distinctUntilChanged } from "rxjs/operators";
import { AuthService } from "../auth/auth.service"; import { AuthService } from "../auth/auth.service";
import { IIssueCategory, IRequestEngineResult, ISearchMovieResult } from "../interfaces"; import { IIssueCategory, IRequestEngineResult, ISearchMovieResult } from "../interfaces";
import { NotificationService, RequestService, SearchService } from "../services"; import { NotificationService, RequestService, SearchService } from "../services";
import { IRemainingRequests } from "../interfaces/IRemainingRequests";
@Component({ @Component({
selector: "movie-search", selector: "movie-search",
@ -19,6 +20,7 @@ export class MovieSearchComponent implements OnInit {
public searchChanged: Subject<string> = new Subject<string>(); public searchChanged: Subject<string> = new Subject<string>();
public movieResults: ISearchMovieResult[]; public movieResults: ISearchMovieResult[];
public result: IRequestEngineResult; public result: IRequestEngineResult;
public remaining: IRemainingRequests;
public searchApplied = false; public searchApplied = false;
@Input() public issueCategories: IIssueCategory[]; @Input() public issueCategories: IIssueCategory[];
@ -35,7 +37,6 @@ export class MovieSearchComponent implements OnInit {
private notificationService: NotificationService, private authService: AuthService, private notificationService: NotificationService, private authService: AuthService,
private readonly translate: TranslateService, private sanitizer: DomSanitizer, private readonly translate: TranslateService, private sanitizer: DomSanitizer,
private readonly platformLocation: PlatformLocation) { private readonly platformLocation: PlatformLocation) {
this.searchChanged.pipe( this.searchChanged.pipe(
debounceTime(600), // Wait Xms after the last event before emitting last event debounceTime(600), // Wait Xms after the last event before emitting last event
distinctUntilChanged(), // only emit if value is different from previous value distinctUntilChanged(), // only emit if value is different from previous value
@ -69,10 +70,21 @@ export class MovieSearchComponent implements OnInit {
result: false, result: false,
errorMessage: "", 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) { public search(text: any) {
this.searchChanged.next(text.target.value); this.searchChanged.next(text.target.value);
} }

View file

@ -8,6 +8,7 @@ import { TreeNode } from "primeng/primeng";
import { FilterType, IChildRequests, IFilter, IMovieRequestModel, IMovieRequests, IMovieUpdateModel, IRequestEngineResult, IRequestsViewModel, ITvRequests, ITvUpdateModel, OrderType } from "../interfaces"; import { FilterType, IChildRequests, IFilter, IMovieRequestModel, IMovieRequests, IMovieUpdateModel, IRequestEngineResult, IRequestsViewModel, ITvRequests, ITvUpdateModel, OrderType } from "../interfaces";
import { ITvRequestViewModel } from "../interfaces"; import { ITvRequestViewModel } from "../interfaces";
import { ServiceHelpers } from "./service.helpers"; import { ServiceHelpers } from "./service.helpers";
import { IRemainingRequests } from "../interfaces/IRemainingRequests";
@Injectable() @Injectable()
export class RequestService extends ServiceHelpers { export class RequestService extends ServiceHelpers {
@ -15,6 +16,10 @@ export class RequestService extends ServiceHelpers {
super(http, "/api/v1/Request/", platformLocation); super(http, "/api/v1/Request/", platformLocation);
} }
public getRemainingMovieRequests(): Observable<IRemainingRequests> {
return this.http.get<IRemainingRequests>(`${this.url}movie/remaining`, {headers: this.headers});
}
public requestMovie(movie: IMovieRequestModel): Observable<IRequestEngineResult> { public requestMovie(movie: IMovieRequestModel): Observable<IRequestEngineResult> {
return this.http.post<IRequestEngineResult>(`${this.url}Movie/`, JSON.stringify(movie), {headers: this.headers}); return this.http.post<IRequestEngineResult>(`${this.url}Movie/`, JSON.stringify(movie), {headers: this.headers});
} }

View file

@ -12,6 +12,7 @@ using Ombi.Attributes;
using Ombi.Core.Models.UI; using Ombi.Core.Models.UI;
using Ombi.Models; using Ombi.Models;
using Ombi.Store.Entities; using Ombi.Store.Entities;
using Ombi.Core.Models;
namespace Ombi.Controllers namespace Ombi.Controllers
{ {
@ -464,5 +465,14 @@ namespace Ombi.Controllers
await TvRequestEngine.UnSubscribeRequest(requestId, RequestType.TvShow); await TvRequestEngine.UnSubscribeRequest(requestId, RequestType.TvShow);
return true; return true;
} }
/// <summary>
/// Gets model containing remaining number of requests.
/// </summary>
[HttpGet("movie/remaining")]
public async Task<RequestQuotaCountModel> GetRemainingRequests()
{
return await MovieRequestEngine.GetRemainingRequests();
}
} }
} }