1 import { SortMeta } from 'primeng/api'
2 import { from } from 'rxjs'
3 import { catchError, concatMap, toArray } from 'rxjs/operators'
4 import { HttpClient, HttpParams } from '@angular/common/http'
5 import { Injectable } from '@angular/core'
6 import { RestExtractor, RestPagination, RestService } from '@app/core'
7 import { arrayify } from '@shared/core-utils'
8 import { ResultList, UserRegistration } from '@shared/models'
9 import { environment } from '../../../../environments/environment'
12 export class AdminRegistrationService {
13 private static BASE_REGISTRATION_URL = environment.apiUrl + '/api/v1/users/registrations'
16 private authHttp: HttpClient,
17 private restExtractor: RestExtractor,
18 private restService: RestService
21 listRegistrations (options: {
22 pagination: RestPagination
26 const { pagination, sort, search } = options
28 const url = AdminRegistrationService.BASE_REGISTRATION_URL
30 let params = new HttpParams()
31 params = this.restService.addRestGetParams(params, pagination, sort)
34 params = params.append('search', search)
37 return this.authHttp.get<ResultList<UserRegistration>>(url, { params })
39 catchError(res => this.restExtractor.handleError(res))
43 acceptRegistration (registration: UserRegistration, moderationResponse: string) {
44 const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/accept'
45 const body = { moderationResponse }
47 return this.authHttp.post(url, body)
48 .pipe(catchError(res => this.restExtractor.handleError(res)))
51 rejectRegistration (registration: UserRegistration, moderationResponse: string) {
52 const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/reject'
53 const body = { moderationResponse }
55 return this.authHttp.post(url, body)
56 .pipe(catchError(res => this.restExtractor.handleError(res)))
59 removeRegistrations (registrationsArg: UserRegistration | UserRegistration[]) {
60 const registrations = arrayify(registrationsArg)
62 return from(registrations)
64 concatMap(r => this.authHttp.delete(AdminRegistrationService.BASE_REGISTRATION_URL + '/' + r.id)),
66 catchError(err => this.restExtractor.handleError(err))