import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { StatusService } from '@core/services/status.service'; import { FundingSourceTypes } from '@core/typings/budget.typing'; import { AwardForApplicant } from '@features/awards/typings/award.typing'; import { NonprofitService } from '@features/nonprofit/nonprofit.service'; import { DebounceFactory, PaginationOptions, TableDataFactory, TopLevelFilter } from '@yourcause/common'; import { I18nService } from '@yourcause/common/i18n'; import { ApplicantManagerService } from '../applicant-manager.service'; @Component({ selector: 'gc-applicant-awards', templateUrl: './applicant-awards.component.html', styleUrls: ['./applicant-awards.component.scss'] }) export class ApplicantAwardsComponent implements OnInit { tableDataFactory: TableDataFactory; id: string; tableKey: string; topLevelFilters: TopLevelFilter[] = []; FundingSourceTypes = FundingSourceTypes; paymentStatusMap = this.statusService.paymentStatusMap; fromRoute = this.applicantManagerService.getFromRouteForProfile(); constructor ( private applicantManagerService: ApplicantManagerService, private activatedRoute: ActivatedRoute, private statusService: StatusService, private i18n: I18nService, private nonprofitService: NonprofitService ) { } get nonprofitRouterLink () { return this.nonprofitService.get('nonprofitProfileRouterLink'); } ngOnInit () { this.topLevelFilters = [ new TopLevelFilter( 'text', 'organizationInfo.name', '', this.i18n.translate( 'nonprofits:textSearchByOrgOrAwardAmount', {}, 'Search by organization or award amount' ), undefined, undefined, [{ column: 'organizationInfo.name', filterType: 'cn' }, { column: 'awardAmount', filterType: 'eq' }] ) ]; this.setTableDataFactory(); } setTableDataFactory () { this.id = this.activatedRoute.snapshot.parent.params.id; this.tableKey = `APPLICANT_AWARDS_${this.id}`; this.tableDataFactory = DebounceFactory.createSimple( async (options: PaginationOptions) => { const result = await this.applicantManagerService.getAwardsForApplicant( +this.id, options ); return { success: true, data: { recordCount: result.recordCount, records: result.records.map((record: AwardForApplicant) => { if (record.organizationInfo) { this.setNonprofitRouterLinkMap( (record.organizationInfo.nonprofitGuid as any) || record.organizationInfo.id ); } return record; }) } }; } ); } setNonprofitRouterLinkMap (id: number) { const appId = this.activatedRoute.parent ? this.activatedRoute.parent.snapshot.params.id : null; this.nonprofitService.setNonprofitRouterLinkMap( id, appId ); } }