public async Task OperationAccountAsync(int fromAccountId, int toAccountId, AccountStatementDto accountStatementDto) { using (var tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var fromAccount = _dbContext.Accounts.Include(x => x.AccountStatements) .FirstOrDefault(x => x.Id == fromAccountId); var toAccount = _dbContext.Accounts.Include(x => x.AccountStatements) .FirstOrDefault(x => x.Id == toAccountId); if (fromAccount == null || toAccount == null || fromAccount == toAccount) { throw new ArgumentException("Bad request"); } fromAccount.Balance -= accountStatementDto.SumTransaction; fromAccount.AccountStatements.Add(new AccountStatement { DateTime = DateTime.UtcNow, SumTransaction = -1 * accountStatementDto.SumTransaction }); await _dbContext.SaveChangesAsync(); toAccount.Balance += accountStatementDto.SumTransaction; toAccount.AccountStatements.Add(new AccountStatement { DateTime = DateTime.UtcNow, SumTransaction = accountStatementDto.SumTransaction }); await _dbContext.SaveChangesAsync(); } }
public async Task <IActionResult> AccountOperationAsync([FromRoute] int userId, [FromRoute] int accountId, [FromBody] AccountStatementDto accountStatementDto) { if (!ModelState.IsValid) { return(BadRequest()); } await _statementAccount.AccountOperationAsync(userId, accountId, accountStatementDto); return(Ok()); }
private static void VatCreditStatement(CreateCouponViewModel createCouponVm, double maamPaymentCredit, AccountStatementBuilder accountStatementBuilder, List<AccountStatementDto> accountStatements, AccountStatementDto teacherAccountCreditStatement, double maam, double maamFromBalance, ParseUser maamAccount, ParseUser maamBalanceAccount, CurrencyRetriver currencyRetriever) { if (maamPaymentCredit > 0) { // add record for mamm account var maamAccountCreditStatement = accountStatementBuilder.SetAccountStatement( maamAccount, maamPaymentCredit, 0, TransactionType.CouponVatCredit, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(maamAccountCreditStatement); createCouponVm.MaamAccountBalance = maamAccount.GetPointerObject<UserAdminData>("adminData").Balance; if (teacherAccountCreditStatement != null) { teacherAccountCreditStatement.IncludingVat = maam; } } if (maamFromBalance > 0) { // add record for mamm balance account מעמ יתרות var maamBalanceAccountCreditStatement = accountStatementBuilder.SetAccountStatement( maamBalanceAccount, maamFromBalance, 0, TransactionType.CouponVatCredit, DateTime.Now, currencyRetriever.GetCurrent()); accountStatements.Add(maamBalanceAccountCreditStatement); createCouponVm.MaamBalanceAccountBalance = maamBalanceAccount.GetPointerObject<UserAdminData>("adminData").Balance; } }
public async Task <IActionResult> AccountTrancferAsync([FromRoute] int userId, [FromRoute] int fromAccountId, [FromRoute] int toAccountId, [FromBody] AccountStatementDto accountStatementDto) { if (!ModelState.IsValid) { return(BadRequest()); } await _withAccount.TransferAccountAsync(userId, fromAccountId, toAccountId, accountStatementDto); return(Ok()); }
public async Task AccountOperationAsync([FromRoute] int userId, [FromRoute] int accountId, [FromBody] AccountStatementDto accountStatementDto) { using (var tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var user = _dbContext.Users.FirstOrDefault(x => x.Id == userId); var account = _dbContext.Accounts.Include(x => x.AccountStatements) .FirstOrDefault(x => x.Id == accountId); if (account == null || account.UserId == userId) { throw new ArgumentException("Bad request"); } account.Balance += accountStatementDto.SumTransaction; account.AccountStatements.Add(new AccountStatement { DateTime = DateTime.UtcNow, SumTransaction = accountStatementDto.SumTransaction }); await _dbContext.SaveChangesAsync(); } }
private AccountStatement AddStatementToUpdate(IMyMentorRepository repository, AccountStatementDto missingAccountStatement, AccountStatementBuilder accountStatementBuilder) { var asCurrency = repository.FindAllCurrencies(missingAccountStatement.CurrencyId); var statement = missingAccountStatement; var transactionCode = repository.FindTransactionTypesById(statement.TransactionTypeId).TransactionCode; AccountStatementDto accountStatementDto = null; var user = Task.Run(() => repository.FindUserWithAdminData(statement.UserId)).Result; accountStatementDto = Task.Run(() => accountStatementBuilder.SetAccountStatement(user, statement.Credit, statement.Debit, transactionCode, statement.DueDate, asCurrency.Single(), validationToken: statement.ValidationToken)).Result; //UserAdminData adminData; //using (var t = Task.Run(() => user.GetPointerObject<UserAdminData>("adminData"))) //{ // adminData = t.Result; //} //adminData.Balance = accountStatementDto.Balance; //adminData.SaveAsync(); return accountStatementDto.ConvertToAccountStatementDomain(); }