/** * Copyright since 2025 Mifos Initiative * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { Injectable, inject } from '@angular/core'; import { Resolve } from '@angular/router'; import { Observable, forkJoin, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { TasksService } from '../tasks.service'; @Injectable() export class GetRejectedAccounts implements Resolve { private tasksService = inject(TasksService); resolve(): Observable { return forkJoin({ savings: this.tasksService.getRejectedSavingsAccounts().pipe(catchError(() => of({ pageItems: [] }))), current: this.tasksService.getRejectedCurrentAccounts().pipe(catchError(() => of([]))), offices: this.tasksService.getAllOffices().pipe(catchError(() => of([]))) }).pipe( map((results) => { const officeMap: Record = {}; (results.offices || []).forEach((o: any) => { officeMap[o.id] = o.name; }); const savingsItems = (results.savings?.pageItems || []) .filter((a: any) => a.status?.id === 500) .map((a: any) => ({ ...a, officeName: officeMap[a.officeId] || a.officeName || '', fieldOfficerName: a.fieldOfficerName || '', accountType: a.depositType?.value || 'Savings' })); const currentItems = (Array.isArray(results.current) ? results.current : results.current?.pageItems || []) .filter((a: any) => a.status?.id === 500) .map((a: any) => ({ ...a, accountType: 'Current' })); return { pageItems: [ ...savingsItems, ...currentItems ] }; }) ); } }