import { Injectable } from '@angular/core'; import { HttpRestService } from '@core/services/http-rest.service'; import { APIAdminClient, ObjectDataCsv } from '@core/typings/api/admin-client.typing'; import { ReferenceFieldAPI } from '@core/typings/api/reference-fields.typing'; import { PaginatedResponse, PaginationOptions } from '@yourcause/common'; @Injectable({ providedIn: 'root' }) export class AdminClientResources { constructor ( private http: HttpRestService ) { } getClients ( paginationOptions: PaginationOptions ): Promise> { return this.http.post('/api/admin/Clients/info', { paginationOptions }); } getCSRClientsNotInGC (): Promise { return this.http.get('/api/admin/Clients/CsrClientsNotInGc'); } getClientPrograms ( clientId: number ): Promise { return this.http.get(`/api/admin/Clients/${clientId}/programs`); } getClientProgramForms ( clientId: number, programId: number ): Promise { return this.http.get(`/api/admin/Clients/${clientId}/programs/${programId}/forms`); } getClientReferenceFields ( clientId: number, formIds: number[] ) { return this.http.post< PaginatedResponse, { paginationOptions: PaginationOptions; formIds: number[] }>( `/api/admin/Clients/${clientId}/ReferenceFields`, { paginationOptions: { filterColumns: [], orFilterColumns: [], pageNumber: 0, retrieveTotalRecordCount: false, returnAll: true, rowsPerPage: 1, sortColumns: [] }, formIds } ); } getClientBudgetsAndFundingSources ( clientId: number ): Promise { const endpoint = `api/admin/Clients/${clientId}/BudgetsAndFundingSources`; return this.http.get(endpoint); } getClientDataTables ( clientId: number ): Promise { return this.http.get(`/api/admin/Clients/${clientId}/Picklists`); } clearClientData (clientId: number) { return this.http.post( `api/admin/DataImport/Clients/${clientId}/RemoveAllImportData`, {} ); } createOrUpdateClient ( client: APIAdminClient.SaveClient ): Promise<{ clientId: number; }> { return this.http.post('/api/admin/Clients', client); } checkSubdomainAvailability (subDomain: string) { return this.http.get(`api/admin/Clients/subdomain?subdomain=${subDomain}`); } getClientObjects (clientId: number): Promise { const endpoint = `api/admin/DataImport/Clients/${clientId}/ClientObjects`; return this.http.get(endpoint); } snoozeActivityAlerts ( clientId: number, snoozeTillDate: string ) { const endpoint = '/api/admin/Clients/SnoozeActivityAlerts'; return this.http.post(endpoint, { clientId, snoozeTillDate }); } unsnoozeActivityAlerts ( clientId: number ) { const endpoint = `/api/admin/Clients/${clientId}/UnSnoozeActivityAlerts`; return this.http.get(endpoint); } }