示例#1
0
        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();
            }
        }
示例#2
0
        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;
            }
        }
示例#4
0
        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());
        }
示例#5
0
        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();
        }