Browse Source

bug fix: #2550

pull/2552/head
Ajay Kumar 2 years ago
parent
commit
cc4435e4d8
  1. 18
      apps/api/src/app/account/account.controller.ts
  2. 1
      apps/client/src/app/pages/accounts/accounts-page.component.ts
  3. 32
      apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts

18
apps/api/src/app/account/account.controller.ts

@ -194,6 +194,24 @@ export class AccountController {
return id;
});
const fromAccountBalance = accountsOfUser.find(
(account) => account.id === accountIdFrom
).balance;
if (fromAccountBalance < balance) {
throw new HttpException(
getReasonPhrase(StatusCodes.BAD_REQUEST),
StatusCodes.BAD_REQUEST
);
}
if (accountIdFrom === accountIdTo) {
throw new HttpException(
getReasonPhrase(StatusCodes.BAD_REQUEST),
StatusCodes.BAD_REQUEST
);
}
if (
![accountIdFrom, accountIdTo].every((accountId) => {
return currentAccountIds.includes(accountId);

1
apps/client/src/app/pages/accounts/accounts-page.component.ts

@ -283,7 +283,6 @@ export class AccountsPageComponent implements OnDestroy, OnInit {
data: {
accounts: this.accounts
},
height: this.deviceType === 'mobile' ? '97.5vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});

32
apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts

@ -4,7 +4,13 @@ import {
Inject,
OnDestroy
} from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import {
AbstractControl,
FormBuilder,
FormGroup,
ValidationErrors,
Validators
} from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto';
import { Account } from '@prisma/client';
@ -35,11 +41,16 @@ export class TransferBalanceDialog implements OnDestroy {
public ngOnInit() {
this.accounts = this.data.accounts;
this.transferBalanceForm = this.formBuilder.group({
balance: [0, Validators.required],
fromAccount: ['', Validators.required],
toAccount: ['', Validators.required]
});
this.transferBalanceForm = this.formBuilder.group(
{
balance: ['', Validators.required],
fromAccount: ['', Validators.required],
toAccount: ['', Validators.required]
},
{
validators: this.compareAccounts
}
);
this.transferBalanceForm.get('fromAccount').valueChanges.subscribe((id) => {
this.currency = this.accounts.find((account) => {
@ -66,4 +77,13 @@ export class TransferBalanceDialog implements OnDestroy {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
}
private compareAccounts(control: AbstractControl): ValidationErrors {
const accountFrom = control.get('fromAccount');
const accountTo = control.get('toAccount');
if (accountFrom.value === accountTo.value) {
return { invalid: true };
}
}
}

Loading…
Cancel
Save