import { Injectable } from '@angular/core'; import { HttpRestService } from '@core/services/http-rest.service'; import { AdaptedAdminUser, AdminFromSearch, AdminUser, PlatformAdminRole } from '@core/typings/user.typing'; import { PaginationOptions } from '@yourcause/common'; @Injectable({ providedIn: 'root' }) export class AdminUserResources { constructor ( private http: HttpRestService ) { } getAllAdminRoles (): Promise { const endpoint = '/api/admin/AdminAccountManagement/Roles'; return this.http.get(endpoint); } adminUsersPaginated ( paginationOptions: PaginationOptions ) { const endpoint = 'api/admin/adminaccountmanagement/getadminuserandrole'; return this.http.post(endpoint, { paginationOptions }); } activeAdminUserCount () { const endpoint = 'api/admin/adminaccountmanagement/getactiveadmincount'; return this.http.get(endpoint); } addAdminUser (adminUser: AdaptedAdminUser) { const endpoint = 'api/admin/AdminAccountManagement/AddAdmin'; return this.http.post(endpoint, { firstName: adminUser.firstName.trim(), lastName: adminUser.lastName.trim(), email: adminUser.email, roleIds: adminUser.roleIds, clientZoneIds: adminUser.clientZoneIds }); } updateAdminUser (adminUser: AdaptedAdminUser) { const endpoint = 'api/admin/AdminAccountManagement/UpdateAdminUserRoles'; return this.http.post(endpoint, { userId: adminUser.userId, roleIds: adminUser.roleIds, clientZoneIds: adminUser.clientZoneIds }); } requestPasswordEmail (email: string) { const endpoint = 'api/admin/AdminAccountManagement/RequestPasswordChange'; return this.http.post(endpoint, { email }); } getAdminDetail (userId: number) { const endpoint = `api/admin/adminaccountmanagement/getadminuserdetails?userid=${userId}`; return this.http.get(endpoint); } toggleAdminUserStatus ( userId: number, activationStatus: boolean ) { const endpoint = 'api/admin/adminaccountmanagement/toggleuseractivationstatus'; return this.http.post(endpoint, { userId, updatedDeactivationStatus: activationStatus }); } searchActiveDirectory ( searchTerm: string, topResults = 5 ): Promise { const endpoint = `api/admin/AdminAccountManagement/SearchUsers?query=${searchTerm}&topResults=${topResults}`; return this.http.get(endpoint); } }