diff --git a/src/Ombi/ClientApp/app/services/index.ts b/src/Ombi/ClientApp/app/services/index.ts index 56545e3ec..26a38c11c 100644 --- a/src/Ombi/ClientApp/app/services/index.ts +++ b/src/Ombi/ClientApp/app/services/index.ts @@ -9,4 +9,4 @@ export * from "./search.service"; export * from "./service.helpers"; export * from "./settings.service"; export * from "./status.service"; -export * from "./update.service"; +export * from "./job.service"; diff --git a/src/Ombi/ClientApp/app/services/update.service.ts b/src/Ombi/ClientApp/app/services/job.service.ts similarity index 71% rename from src/Ombi/ClientApp/app/services/update.service.ts rename to src/Ombi/ClientApp/app/services/job.service.ts index b6184dc76..28c5fccc5 100644 --- a/src/Ombi/ClientApp/app/services/update.service.ts +++ b/src/Ombi/ClientApp/app/services/job.service.ts @@ -5,7 +5,7 @@ import { Observable } from "rxjs/Rx"; import { ServiceAuthHelpers } from "./service.helpers"; @Injectable() -export class UpdateService extends ServiceAuthHelpers { +export class JobService extends ServiceAuthHelpers { constructor(http: AuthHttp) { super(http, "/api/v1/Job/"); } @@ -16,4 +16,8 @@ export class UpdateService extends ServiceAuthHelpers { public checkForNewUpdate(): Observable { return this.http.get(`${this.url}update/`).map(this.extractData); } + + public runPlexImporter(): Observable { + return this.http.post(`${this.url}plexUserImporter/`, { headers: this.headers }).map(this.extractData); + } } diff --git a/src/Ombi/ClientApp/app/settings/settings.module.ts b/src/Ombi/ClientApp/app/settings/settings.module.ts index 44502eded..bead681a2 100644 --- a/src/Ombi/ClientApp/app/settings/settings.module.ts +++ b/src/Ombi/ClientApp/app/settings/settings.module.ts @@ -8,7 +8,7 @@ import { ClipboardModule } from "ngx-clipboard/dist"; import { AuthGuard } from "../auth/auth.guard"; import { AuthModule } from "../auth/auth.module"; import { AuthService } from "../auth/auth.service"; -import { RadarrService, SonarrService, TesterService, UpdateService, ValidationService } from "../services"; +import { JobService, RadarrService, SonarrService, TesterService, ValidationService } from "../services"; import { PipeModule } from "../pipes/pipe.module"; import { AboutComponent } from "./about/about.component"; @@ -100,7 +100,7 @@ const routes: Routes = [ AuthGuard, ValidationService, TesterService, - UpdateService, + JobService, ], }) diff --git a/src/Ombi/ClientApp/app/settings/update/update.component.ts b/src/Ombi/ClientApp/app/settings/update/update.component.ts index 5e3cdd82a..097eed0ab 100644 --- a/src/Ombi/ClientApp/app/settings/update/update.component.ts +++ b/src/Ombi/ClientApp/app/settings/update/update.component.ts @@ -2,7 +2,7 @@ import { FormBuilder, FormGroup } from "@angular/forms"; import { NotificationService } from "../../services"; -import { SettingsService, UpdateService } from "../../services"; +import { JobService, SettingsService } from "../../services"; @Component({ templateUrl: "./update.component.html", @@ -14,7 +14,7 @@ export class UpdateComponent implements OnInit { constructor(private settingsService: SettingsService, private notificationService: NotificationService, - private updateService: UpdateService, + private updateService: JobService, private fb: FormBuilder) { } public ngOnInit() { diff --git a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html index a639bef1e..b1b2b9572 100644 --- a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html +++ b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html @@ -7,14 +7,14 @@
- - + +

Plex Users exclude from Import

- +
@@ -23,7 +23,7 @@
- +
@@ -46,6 +46,9 @@
+ +
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts index 4f362a342..4043b59b3 100644 --- a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts +++ b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts @@ -2,7 +2,7 @@ import { ICheckbox, IUserManagementSettings } from "../../interfaces"; import { IPlexFriends } from "../../interfaces/IPlex"; -import { IdentityService, NotificationService, PlexService, SettingsService } from "../../services"; +import { IdentityService, JobService, NotificationService, PlexService, SettingsService } from "../../services"; @Component({ templateUrl: "./usermanagement.component.html", @@ -21,7 +21,8 @@ export class UserManagementComponent implements OnInit { constructor(private settingsService: SettingsService, private notificationService: NotificationService, private identityService: IdentityService, - private plexService: PlexService) { + private plexService: PlexService, + private jobService: JobService) { } @@ -64,6 +65,7 @@ export class UserManagementComponent implements OnInit { }); this.settings.defaultRoles = enabledClaims.map((claim) => claim.value); this.settings.bannedPlexUserIds = this.bannedPlexUsers.map((u) => u.id); + this.settingsService.saveUserManagementSettings(this.settings).subscribe(x => { if (x === true) { this.notificationService.success("Saved", "Successfully saved the User Management Settings"); @@ -73,10 +75,14 @@ export class UserManagementComponent implements OnInit { }); } - public filterCountryMultiple(event: any) { + public filterUserList(event: any) { this.filteredPlexUsers = this.filter(event.query, this.plexUsers); } + public runImporter(): void { + this.jobService.runPlexImporter().subscribe(); + } + private filter(query: string, users: IPlexFriends[]): IPlexFriends[] { return users.filter((val) => { return val.username.toLowerCase().indexOf(query.toLowerCase()) === 0; diff --git a/src/Ombi/Controllers/JobController.cs b/src/Ombi/Controllers/JobController.cs index 2b2c33052..f1d664e00 100644 --- a/src/Ombi/Controllers/JobController.cs +++ b/src/Ombi/Controllers/JobController.cs @@ -3,6 +3,7 @@ using Hangfire; using Microsoft.AspNetCore.Mvc; using Ombi.Api.Service; using Ombi.Attributes; +using Ombi.Schedule.Jobs.Plex; using Ombi.Schedule.Ombi; namespace Ombi.Controllers @@ -12,12 +13,14 @@ namespace Ombi.Controllers [Produces("application/json")] public class JobController : Controller { - public JobController(IOmbiAutomaticUpdater updater) + public JobController(IOmbiAutomaticUpdater updater, IPlexUserImporter userImporter) { _updater = updater; + _plexUserImporter = userImporter; } private readonly IOmbiAutomaticUpdater _updater; + private readonly IPlexUserImporter _plexUserImporter; [HttpPost("update")] public bool ForceUpdate() @@ -36,5 +39,12 @@ namespace Ombi.Controllers return updateAvailable; } + + [HttpPost("plexuserimporter")] + public bool PlexUserImporter() + { + BackgroundJob.Enqueue(() => _plexUserImporter.Start()); + return true; + } } } \ No newline at end of file