admin-registration.service.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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, UserRegistrationUpdateState } from '@shared/models'
  9. import { environment } from '../../../../environments/environment'
  10. @Injectable()
  11. export class AdminRegistrationService {
  12. private static BASE_REGISTRATION_URL = environment.apiUrl + '/api/v1/users/registrations'
  13. constructor (
  14. private authHttp: HttpClient,
  15. private restExtractor: RestExtractor,
  16. private restService: RestService
  17. ) { }
  18. listRegistrations (options: {
  19. pagination: RestPagination
  20. sort: SortMeta
  21. search?: string
  22. }) {
  23. const { pagination, sort, search } = options
  24. const url = AdminRegistrationService.BASE_REGISTRATION_URL
  25. let params = new HttpParams()
  26. params = this.restService.addRestGetParams(params, pagination, sort)
  27. if (search) {
  28. params = params.append('search', search)
  29. }
  30. return this.authHttp.get<ResultList<UserRegistration>>(url, { params })
  31. .pipe(
  32. catchError(res => this.restExtractor.handleError(res))
  33. )
  34. }
  35. acceptRegistration (options: {
  36. registration: UserRegistration
  37. moderationResponse: string
  38. preventEmailDelivery: boolean
  39. }) {
  40. const { registration, moderationResponse, preventEmailDelivery } = options
  41. const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/accept'
  42. const body: UserRegistrationUpdateState = { moderationResponse, preventEmailDelivery }
  43. return this.authHttp.post(url, body)
  44. .pipe(catchError(res => this.restExtractor.handleError(res)))
  45. }
  46. rejectRegistration (options: {
  47. registration: UserRegistration
  48. moderationResponse: string
  49. preventEmailDelivery: boolean
  50. }) {
  51. const { registration, moderationResponse, preventEmailDelivery } = options
  52. const url = AdminRegistrationService.BASE_REGISTRATION_URL + '/' + registration.id + '/reject'
  53. const body: UserRegistrationUpdateState = { moderationResponse, preventEmailDelivery }
  54. return this.authHttp.post(url, body)
  55. .pipe(catchError(res => this.restExtractor.handleError(res)))
  56. }
  57. removeRegistrations (registrationsArg: UserRegistration | UserRegistration[]) {
  58. const registrations = arrayify(registrationsArg)
  59. return from(registrations)
  60. .pipe(
  61. concatMap(r => this.authHttp.delete(AdminRegistrationService.BASE_REGISTRATION_URL + '/' + r.id)),
  62. toArray(),
  63. catchError(err => this.restExtractor.handleError(err))
  64. )
  65. }
  66. }