public async Task <OpenDepositResponseModel> OpenDepositAsync(DepositCreateModel model) { await _depositCreateModelValidator.ValidateAndThrowAsync(model); var regularAccountCreateModel = _mapper.Map <CreateAccountTemplateModel>(model); regularAccountCreateModel.AccountActivity = AccountActivity.Passive; regularAccountCreateModel.AccountType = AccountType.Regular; var(regularAccount, regularAccountPin) = await _accountService.GetAccountTemplateAsync(regularAccountCreateModel); var depositAccountCreateModel = _mapper.Map <CreateAccountTemplateModel>(model); depositAccountCreateModel.AccountActivity = AccountActivity.Passive; depositAccountCreateModel.AccountType = AccountType.Deposit; var(depositAccount, depositAccountPin) = await _accountService.GetAccountTemplateAsync(depositAccountCreateModel); var depositContract = _context.Add(_mapper.Map <DepositContract>(model)).Entity; depositContract.DepositAccount = depositAccount; depositContract.RegularAccount = regularAccount; var bankDevelopmentFundAccount = await _accountService.GetBankDevelopmentFundAccountForCurrencyAsync(model.CurrencyId); var initialTransactions = new[] { new Transaction { ContractNumber = depositContract.ContractNumber, CurrencyId = depositContract.CurrencyId, Amount = depositContract.Amount, CreatedAt = depositContract.ProgramStartDate, SenderAccountNumber = BankConstants.CashDeskAccountNumber, ReceiverAccountNumber = regularAccount.AccountNumber }, new Transaction { ContractNumber = depositContract.ContractNumber, CurrencyId = depositContract.CurrencyId, Amount = depositContract.Amount, CreatedAt = depositContract.ProgramStartDate, SenderAccountNumber = regularAccount.AccountNumber, ReceiverAccountNumber = bankDevelopmentFundAccount.AccountNumber } }; _context.Transactions.AddRange(initialTransactions); await _context.SaveChangesAsync(); return(new OpenDepositResponseModel { RegularAccountPin = regularAccountPin, DepositAccountPin = depositAccountPin }); }
public bool CreateDeposit(DepositCreateModel model) { using (var ctx = new BankEntities()) { var entity = new Deposit { TransactionID = model.TransactionID, Amount = model.Amount }; ctx.Deposits.Add(entity); return(ctx.SaveChanges() == 1); } }
public static void ProcessDeposit(string accountNumber, int transactionType) { int transactionId = TransactionATMController.CreateTransactionConsole(accountNumber, transactionType); decimal amount = GetDepositAmountFromUser(); DepositCreateModel newDeposit = new DepositCreateModel { Amount = amount, TransactionID = transactionId }; depositService.CreateDeposit(newDeposit); decimal deposit = newDeposit.Amount; decimal newBalance = accountService.AddDepositToBalance(accountNumber, deposit); accountService.SaveNewBalanceToDatabase(accountNumber, newBalance); }
public async Task <ActionResult <Guid> > OpenDepositAsync(DepositCreateModel model) { var openDepositResponseModel = await _depositService.OpenDepositAsync(model); return(Ok(openDepositResponseModel)); }