import { Injectable } from '@angular/core'; import { HttpRestService } from '@core/services/http-rest.service'; import { CyclesAPI } from '@core/typings/api/cycles.typing'; import { AppliedApplicant, AppliedNominee } from '@core/typings/applicant.typing'; import { ApplicationFromPaginated, BulkApplicationDetails, GetPaymentStatsPayload, Nominee, PaymentStats, SearchPaginatedResult } from '@core/typings/application.typing'; import { AppliedOrganization } from '@core/typings/organization.typing'; import { ProgramTypes } from '@core/typings/program.typing'; import { FilterColumn, PaginatedResponse, PaginationOptions } from '@yourcause/common'; import type { Moment } from 'moment'; @Injectable({ providedIn: 'root' }) export class ApplicationManagerResources { constructor ( private httpRestService: HttpRestService ) { } getNomineeInfo (id: number): Promise { const endpoint = `api/manager/applications/${id}/NomineeInfo`; return this.httpRestService.get(endpoint); } searchApplicationsPaginated ( paginationOptions: PaginationOptions, applicationId: number, organizationName: string, applicantName: string, applicantEmail: string, applicantId: number, organizationIdentification: string, startDate: Moment, endDate: Moment, cycleStatusFilter: CyclesAPI.CycleStatusFilterType, programType = ProgramTypes.GRANT, formFilterModels: FilterColumn[] = [] ): Promise { const endpoint = 'api/manager/applications/SearchPaginated'; return this.httpRestService.post(endpoint, { paginationOptions, applicationId, organizationName, applicantName, applicantEmail, applicantId, organizationIdentification, cycleStatusFilter, programType, startDate, endDate, formFilterModels }); } getOrganizations ( options: PaginationOptions, isNomination = false ) { const endpoint = 'api/manager/applications/GetAppliedOrganizations'; return this.httpRestService.post(endpoint, { paginationOptions: options, isNomination }); } getApplicants ( options: PaginationOptions, isNomination = false ) { const endpoint = 'api/manager/applications/GetAppliedApplicants'; return this.httpRestService.post(endpoint, { paginationOptions: options, isNomination }); } getNominees (options: PaginationOptions) { const endpoint = 'api/manager/applications/GetAppliedNominees'; const response = this.httpRestService.post>(endpoint, { paginationOptions: options }); return response; } getPaymentStats (payload: GetPaymentStatsPayload) { const endpoint = 'api/manager/applications/PaymentStats'; return this.httpRestService.post(endpoint, payload); } getAppCanBeDeleted (applicationId: number) { const endpoint = `api/manager/applications/${applicationId}/CanBeDeleted`; return this.httpRestService.get(endpoint); } getUpdateCycleInfo ( payload: { applicationIds: number[]; programId: number } ): Promise { const endpoint = 'api/manager/applications/GrantProgramCycleUpdateInfo'; return this.httpRestService.post(endpoint, payload); } getBulkApplicationDetails ( applicationIds: number[] ): Promise { const endpoint = '/api/manager/applications/BulkActionIndicators'; return this.httpRestService.post(endpoint, { applicationIds }); } }