]>
Commit | Line | Data |
---|---|---|
9589907c | 1 | import { SortMeta } from 'primeng/api' |
cd940f40 C |
2 | import { from } from 'rxjs' |
3 | import { catchError, concatMap, toArray } from 'rxjs/operators' | |
9589907c C |
4 | import { HttpClient, HttpParams } from '@angular/common/http' |
5 | import { Injectable } from '@angular/core' | |
6 | import { RestExtractor, RestPagination, RestService } from '@app/core' | |
cd940f40 | 7 | import { arrayify } from '@shared/core-utils' |
4115f200 | 8 | import { ResultList, UserRegistration, UserRegistrationUpdateState } from '@shared/models' |
9589907c C |
9 | import { environment } from '../../../../environments/environment' |
10 | ||
11 | @Injectable() | |
12 | export class AdminRegistrationService { | |
13 | private static BASE_REGISTRATION_URL = environment.apiUrl + '/api/v1/users/registrations' | |
14 | ||
15 | constructor ( | |
16 | private authHttp: HttpClient, | |
17 | private restExtractor: RestExtractor, | |
18 | private restService: RestService | |
19 | ) { } | |
20 | ||
21 | listRegistrations (options: { | |
22 | pagination: RestPagination | |
23 | sort: SortMeta | |
24 | search?: string | |
25 | }) { | |
26 | const { pagination, sort, search } = options | |
27 | ||
28 | const url = AdminRegistrationService.BASE_REGISTRATION_URL | |
29 | ||
30 | let params = new HttpParams() | |
31 | params = this.restService.addRestGetParams(params, pagination, sort) | |
32 | ||
33 | if (search) { | |
34 | params = params.append('search', search) | |
35 | } | |
36 | ||
37 | return this.authHttp.get<ResultList<UserRegistration>>(url, { params }) | |
38 | .pipe( | |
39 | catchError(res => this.restExtractor.handleError(res)) | |
40 | ) | |
41 | } | |
42 | ||
4115f200 C |
43 | acceptRegistration (options: { |
44 | registration: UserRegistration | |
45 | moderationResponse: string | |
46 | preventEmailDelivery: boolean | |
47 | }) { | |
48 | const { registration, moderationResponse, preventEmailDelivery } = options | |
49 | ||
9589907c | 50 | const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/accept' |
4115f200 | 51 | const body: UserRegistrationUpdateState = { moderationResponse, preventEmailDelivery } |
9589907c C |
52 | |
53 | return this.authHttp.post(url, body) | |
54 | .pipe(catchError(res => this.restExtractor.handleError(res))) | |
55 | } | |
56 | ||
4115f200 C |
57 | rejectRegistration (options: { |
58 | registration: UserRegistration | |
59 | moderationResponse: string | |
60 | preventEmailDelivery: boolean | |
61 | }) { | |
62 | const { registration, moderationResponse, preventEmailDelivery } = options | |
63 | ||
9589907c | 64 | const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/reject' |
4115f200 | 65 | const body: UserRegistrationUpdateState = { moderationResponse, preventEmailDelivery } |
9589907c C |
66 | |
67 | return this.authHttp.post(url, body) | |
68 | .pipe(catchError(res => this.restExtractor.handleError(res))) | |
69 | } | |
70 | ||
cd940f40 C |
71 | removeRegistrations (registrationsArg: UserRegistration | UserRegistration[]) { |
72 | const registrations = arrayify(registrationsArg) | |
9589907c | 73 | |
cd940f40 C |
74 | return from(registrations) |
75 | .pipe( | |
76 | concatMap(r => this.authHttp.delete(AdminRegistrationService.BASE_REGISTRATION_URL + '/' + r.id)), | |
77 | toArray(), | |
78 | catchError(err => this.restExtractor.handleError(err)) | |
79 | ) | |
9589907c C |
80 | } |
81 | } |