Exemple #1
0
        public virtual async Task <AccountDto> ChangeBalanceAsync(Guid id, ChangeBalanceInput input)
        {
            var account = await _repository.GetAsync(id);

            var configuration = _accountGroupConfigurationProvider.Get(account.AccountGroupName);

            var transactionType = input.ChangedBalance > decimal.Zero ? TransactionType.Debit : TransactionType.Credit;

            var transaction = new Transaction(GuidGenerator.Create(), CurrentTenant.Id, account.Id, account.UserId,
                                              null, transactionType, PrepaymentConsts.ChangeBalanceActionName,
                                              PrepaymentConsts.ChangeBalancePaymentMethod, null, configuration.Currency, input.ChangedBalance,
                                              account.Balance);

            await _transactionRepository.InsertAsync(transaction, true);

            account.ChangeBalance(input.ChangedBalance);

            await _repository.UpdateAsync(account, true);

            return(await MapToGetOutputDtoAsync(account));
        }
Exemple #2
0
 public virtual Task <AccountDto> ChangeBalanceAsync(Guid id, ChangeBalanceInput input)
 {
     return(_service.ChangeBalanceAsync(id, input));
 }