Files
cbsnexora/src/app/loans/loans-view/external-asset-owner-tab/external-asset-owner-tab.component.ts
T

157 lines
4.7 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router, RouterLink } from '@angular/router';
import { ExternalAssetOwner } from 'app/loans/services/external-asset-owner';
import { ExternalAssetOwnerService } from 'app/loans/services/external-asset-owner.service';
import { CancelDialogComponent } from 'app/shared/cancel-dialog/cancel-dialog.component';
import { NgIf, NgClass, DecimalPipe } from '@angular/common';
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
import { ExternalIdentifierComponent } from '../../../shared/external-identifier/external-identifier.component';
import {
MatTable,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatCellDef,
MatCell,
MatHeaderRowDef,
MatHeaderRow,
MatRowDef,
MatRow
} from '@angular/material/table';
import { MatTooltip } from '@angular/material/tooltip';
import { DateFormatPipe } from '../../../pipes/date-format.pipe';
import { FormatNumberPipe } from '../../../pipes/format-number.pipe';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
@Component({
selector: 'mifosx-external-asset-owner-tab',
templateUrl: './external-asset-owner-tab.component.html',
styleUrls: ['./external-asset-owner-tab.component.scss'],
imports: [
...STANDALONE_SHARED_IMPORTS,
NgClass,
FaIconComponent,
ExternalIdentifierComponent,
MatTable,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatCellDef,
MatCell,
MatTooltip,
MatHeaderRowDef,
MatHeaderRow,
MatRowDef,
MatRow,
DecimalPipe,
DateFormatPipe,
FormatNumberPipe
]
})
export class ExternalAssetOwnerTabComponent implements OnInit {
defaultDate = '9999-12-31';
loanTransfersData: any[] = [];
activeTransferData: any;
loanTransferColumns: string[] = [
'status',
'effectiveFrom',
'ownerExternalId',
'transferExternalId',
'settlementDate',
'purchasePriceRatio',
'actions'
];
currentItem: any;
existActiveTransfer = false;
constructor(
private route: ActivatedRoute,
private router: Router,
private dialog: MatDialog,
private externalAssetOwner: ExternalAssetOwner,
private externalAssetOwnerService: ExternalAssetOwnerService
) {
this.route.data.subscribe((data: { loanTransfersData: any; activeTransferData: any }) => {
this.loanTransfersData = data.loanTransfersData.empty ? [] : data.loanTransfersData.content;
this.activeTransferData = data.activeTransferData || null;
this.existActiveTransfer = data.activeTransferData && data.activeTransferData.transferId != null;
});
}
ngOnInit(): void {
this.currentItem = null;
if (this.loanTransfersData.length > 0) {
this.currentItem = this.loanTransfersData[this.loanTransfersData.length - 1];
}
}
itemCurrentStatus(item: any): string {
return this.externalAssetOwner.itemCurrentStatus(item);
}
itemStatus(status: string): string {
return this.externalAssetOwner.itemStatus(status);
}
isPending(item: any): boolean {
return this.externalAssetOwner.isPending(item);
}
isPendingOrCanceled(item: any): boolean {
return this.externalAssetOwner.isPendingOrCanceled(item);
}
isBuyBackPending(item: any): boolean {
return this.externalAssetOwner.isBuyBackPending(item);
}
canBeCancelled(): boolean {
return this.externalAssetOwner.validateStatus(this.currentItem, 'PENDING');
}
canBeSold(): boolean {
return this.externalAssetOwner.canBeSold(this.currentItem);
}
canBeBuyed(): boolean {
return this.externalAssetOwner.validateStatus(this.currentItem, 'ACTIVE');
}
saleLoan(): void {
this.router.navigate(['../actions/Sell Loan'], { relativeTo: this.route });
}
cancelSaleLoan(): void {
const deleteDataTableDialogRef = this.dialog.open(CancelDialogComponent, {
data: { cancelContext: `the Asset Transfer with the Owner External Id ${this.currentItem.owner.externalId} ` }
});
deleteDataTableDialogRef.afterClosed().subscribe((response: any) => {
if (response.cancel) {
const payload: any = {
transferExternalId: this.currentItem.transferExternalId
};
this.externalAssetOwnerService
.executeExternalAssetOwnerTransferCommand(this.currentItem.transferId, payload, 'cancel')
.subscribe((result: any) => {
this.reload();
});
}
});
}
buyBackLoan(): void {
this.router.navigate(['../actions/Buy Back Loan'], { relativeTo: this.route });
}
routeJournalEntry(ev: MouseEvent): void {
ev.stopPropagation();
}
reload() {
const url: string = this.router.url;
this.router.navigateByUrl(`/`, { skipLocationChange: true }).then(() => this.router.navigate([url]));
}
}