mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-12 16:22:55 -07:00
Some fixes around the UI and managing requests #865
This commit is contained in:
parent
5d0e317315
commit
f6cd68ff28
8 changed files with 50 additions and 18 deletions
|
@ -160,7 +160,6 @@ namespace Ombi.Core.Engine
|
||||||
results.Issues = request.Issues;
|
results.Issues = request.Issues;
|
||||||
results.Overview = request.Overview;
|
results.Overview = request.Overview;
|
||||||
results.PosterPath = request.PosterPath;
|
results.PosterPath = request.PosterPath;
|
||||||
results.RequestedUser = request.RequestedUser;
|
|
||||||
|
|
||||||
await MovieRepository.Update(results);
|
await MovieRepository.Update(results);
|
||||||
return results;
|
return results;
|
||||||
|
|
|
@ -62,6 +62,19 @@ namespace Ombi.Core.Engine
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if we have auto approved the request, if we have then mark the episodes as approved
|
||||||
|
if (tvBuilder.ChildRequest.Approved)
|
||||||
|
{
|
||||||
|
foreach (var seasons in tvBuilder.ChildRequest.SeasonRequests)
|
||||||
|
{
|
||||||
|
foreach (var ep in seasons.Episodes)
|
||||||
|
{
|
||||||
|
ep.Approved = true;
|
||||||
|
ep.Requested = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await Audit.Record(AuditType.Added, AuditArea.TvRequest, $"Added Request {tv.Title}", Username);
|
await Audit.Record(AuditType.Added, AuditArea.TvRequest, $"Added Request {tv.Title}", Username);
|
||||||
|
|
||||||
var existingRequest = await TvRepository.Get().FirstOrDefaultAsync(x => x.TvDbId == tv.Id);
|
var existingRequest = await TvRepository.Get().FirstOrDefaultAsync(x => x.TvDbId == tv.Id);
|
||||||
|
@ -97,8 +110,8 @@ namespace Ombi.Core.Engine
|
||||||
tvBuilder.ChildRequest.Id = 0;
|
tvBuilder.ChildRequest.Id = 0;
|
||||||
return await AddExistingRequest(tvBuilder.ChildRequest, existingRequest);
|
return await AddExistingRequest(tvBuilder.ChildRequest, existingRequest);
|
||||||
}
|
}
|
||||||
// This is a new request
|
|
||||||
|
|
||||||
|
// This is a new request
|
||||||
var newRequest = tvBuilder.CreateNewRequest(tv);
|
var newRequest = tvBuilder.CreateNewRequest(tv);
|
||||||
return await AddRequest(newRequest.NewRequest);
|
return await AddRequest(newRequest.NewRequest);
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,14 +68,16 @@
|
||||||
<td>
|
<td>
|
||||||
<span *ngIf="ep.available" class="label label-success">Available</span>
|
<span *ngIf="ep.available" class="label label-success">Available</span>
|
||||||
<span *ngIf="ep.approved && !ep.available" class="label label-info">Processing Request</span>
|
<span *ngIf="ep.approved && !ep.available" class="label label-info">Processing Request</span>
|
||||||
|
<div *ngIf="!ep.approved">
|
||||||
<div *ngIf="ep.requested && !ep.available; then requested else notRequested"></div>
|
<div *ngIf="ep.requested && !ep.available; then requested else notRequested"></div>
|
||||||
<ng-template #requested>
|
<ng-template #requested>
|
||||||
<span *ngIf="!ep.available" class="label label-warning">Pending Approval</span>
|
<span class="label label-warning">Pending Approval</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ng-template #notRequested>
|
<ng-template #notRequested>
|
||||||
<span *ngIf="!ep.available" class="label label-danger">Not Yet Requested</span>
|
<span class="label label-danger">Not Yet Requested</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -26,6 +26,12 @@ export class TvRequestChildrenComponent {
|
||||||
debugger;
|
debugger;
|
||||||
request.approved = false;
|
request.approved = false;
|
||||||
request.denied = true;
|
request.denied = true;
|
||||||
|
|
||||||
|
request.seasonRequests.forEach((season) => {
|
||||||
|
season.episodes.forEach((ep) => {
|
||||||
|
ep.approved = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
this.requestService.updateChild(request)
|
this.requestService.updateChild(request)
|
||||||
.subscribe();
|
.subscribe();
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,16 +52,16 @@
|
||||||
<span *ngIf="result.available" class="label label-success">Available</span>
|
<span *ngIf="result.available" class="label label-success">Available</span>
|
||||||
<span *ngIf="result.quality" class="label label-success">{{result.quality}}p</span>
|
<span *ngIf="result.quality" class="label label-success">{{result.quality}}p</span>
|
||||||
<span *ngIf="result.approved && !result.available" class="label label-info">Processing Request</span>
|
<span *ngIf="result.approved && !result.available" class="label label-info">Processing Request</span>
|
||||||
<div *ngIf="result.requested && !result.available; then requested else notRequested"></div>
|
<span *ngIf="!result.approved">
|
||||||
<ng-template #requested>
|
<span *ngIf="result.requested && !result.available; then requested else notRequested"></span>
|
||||||
<span *ngIf="!result.available" class="label label-warning">Pending Approval</span>
|
<ng-template #requested>
|
||||||
</ng-template>
|
<span *ngIf="!result.available" class="label label-warning">Pending Approval</span>
|
||||||
|
</ng-template>
|
||||||
<ng-template #notRequested>
|
|
||||||
<span *ngIf="!result.available" class="label label-danger">Not Yet Requested</span>
|
|
||||||
</ng-template>
|
|
||||||
|
|
||||||
|
|
||||||
|
<ng-template #notRequested>
|
||||||
|
<span *ngIf="!result.available" class="label label-danger">Not Yet Requested</span>
|
||||||
|
</ng-template>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import 'rxjs/add/operator/map';
|
||||||
import "rxjs/add/operator/takeUntil";
|
import "rxjs/add/operator/takeUntil";
|
||||||
|
|
||||||
import { SearchService } from '../services/search.service';
|
import { SearchService } from '../services/search.service';
|
||||||
|
import { AuthService } from '../auth/auth.service';
|
||||||
import { RequestService } from '../services/request.service';
|
import { RequestService } from '../services/request.service';
|
||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
|
|
||||||
|
@ -25,7 +26,9 @@ export class MovieSearchComponent implements OnInit, OnDestroy {
|
||||||
result: IRequestEngineResult;
|
result: IRequestEngineResult;
|
||||||
searchApplied = false;
|
searchApplied = false;
|
||||||
|
|
||||||
constructor(private searchService: SearchService, private requestService: RequestService, private notificationService: NotificationService) {
|
constructor(private searchService: SearchService, private requestService: RequestService,
|
||||||
|
private notificationService: NotificationService, private authService : AuthService) {
|
||||||
|
|
||||||
this.searchChanged
|
this.searchChanged
|
||||||
.debounceTime(600) // Wait Xms afterthe last event before emitting last event
|
.debounceTime(600) // Wait Xms afterthe 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
|
||||||
|
@ -63,6 +66,10 @@ export class MovieSearchComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
request(searchResult: ISearchMovieResult) {
|
request(searchResult: ISearchMovieResult) {
|
||||||
searchResult.requested = true;
|
searchResult.requested = true;
|
||||||
|
if (this.authService.hasRole("admin") || this.authService.hasRole("AutoApproveMovie")) {
|
||||||
|
searchResult.approved = true;
|
||||||
|
}
|
||||||
|
|
||||||
this.requestService.requestMovie(searchResult)
|
this.requestService.requestMovie(searchResult)
|
||||||
.takeUntil(this.subscriptions)
|
.takeUntil(this.subscriptions)
|
||||||
.subscribe(x => {
|
.subscribe(x => {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
|
import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
|
||||||
import {Router} from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { Subject } from 'rxjs/Subject';
|
import { Subject } from 'rxjs/Subject';
|
||||||
import 'rxjs/add/operator/debounceTime';
|
import 'rxjs/add/operator/debounceTime';
|
||||||
import 'rxjs/add/operator/distinctUntilChanged';
|
import 'rxjs/add/operator/distinctUntilChanged';
|
||||||
|
@ -7,6 +7,7 @@ import 'rxjs/add/operator/map';
|
||||||
import "rxjs/add/operator/takeUntil";
|
import "rxjs/add/operator/takeUntil";
|
||||||
|
|
||||||
import { SearchService } from '../services/search.service';
|
import { SearchService } from '../services/search.service';
|
||||||
|
import { AuthService } from '../auth/auth.service';
|
||||||
import { RequestService } from '../services/request.service';
|
import { RequestService } from '../services/request.service';
|
||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
|
|
||||||
|
@ -33,7 +34,8 @@ export class TvSearchComponent implements OnInit, OnDestroy {
|
||||||
searchApplied = false;
|
searchApplied = false;
|
||||||
|
|
||||||
constructor(private searchService: SearchService, private requestService: RequestService,
|
constructor(private searchService: SearchService, private requestService: RequestService,
|
||||||
private notificationService: NotificationService, private route : Router) {
|
private notificationService: NotificationService, private route: Router, private authService: AuthService) {
|
||||||
|
|
||||||
this.searchChanged
|
this.searchChanged
|
||||||
.debounceTime(600) // Wait Xms afterthe last event before emitting last event
|
.debounceTime(600) // Wait Xms afterthe 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
|
||||||
|
@ -151,7 +153,7 @@ export class TvSearchComponent implements OnInit, OnDestroy {
|
||||||
this.searchService.getShowInformation(val.id)
|
this.searchService.getShowInformation(val.id)
|
||||||
.takeUntil(this.subscriptions)
|
.takeUntil(this.subscriptions)
|
||||||
.subscribe(x => {
|
.subscribe(x => {
|
||||||
this.updateItem(val,x);
|
this.updateItem(val, x);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -159,6 +161,9 @@ export class TvSearchComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
request(searchResult: ISearchTvResult) {
|
request(searchResult: ISearchTvResult) {
|
||||||
searchResult.requested = true;
|
searchResult.requested = true;
|
||||||
|
if (this.authService.hasRole("admin") || this.authService.hasRole("AutoApproveMovie")) {
|
||||||
|
searchResult.approved = true;
|
||||||
|
}
|
||||||
this.requestService.requestTv(searchResult)
|
this.requestService.requestTv(searchResult)
|
||||||
.takeUntil(this.subscriptions)
|
.takeUntil(this.subscriptions)
|
||||||
.subscribe(x => {
|
.subscribe(x => {
|
||||||
|
|
|
@ -36,7 +36,7 @@ export class RequestService extends ServiceAuthHelpers {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMovieRequest(request: IMovieRequests): Observable<IMovieRequests> {
|
updateMovieRequest(request: IMovieRequests): Observable<IMovieRequests> {
|
||||||
return this.http.post(`${this.url}movie/`, JSON.stringify(request), { headers: this.headers }).map(this.extractData);
|
return this.http.put(`${this.url}movie/`, JSON.stringify(request), { headers: this.headers }).map(this.extractData);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTvRequests(count: number, position: number): Observable<ITvRequests[]> {
|
getTvRequests(count: number, position: number): Observable<ITvRequests[]> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue