private async Task <BankAccountDoc> UpdateBankAccount(String accountId, IEnumerable <BankAccount> accounts, IAccountProvider dataProvider) { var accountToUpdate = await _bankAccountRepository.FindAccountByCriteria(a => a.Id.Equals(accountId)); var updatedAccount = GenerateBankAccount(accounts, accountToUpdate); var accountDescriptor = AutoMapper.Mapper.Map <BankAccountDescriptor>(accountToUpdate); if (updatedAccount == null || accountToUpdate.UpdatedOn.AddDays(1) > DateTime.Now) { return(accountToUpdate); } var now = DateTime.Now; var startOfThisMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); var startTime = DateTime.Now.AddYears(-1);; var endTime = now; var transactions = ((IBankAccountProvider)dataProvider).GetTransactions(accountDescriptor, startTime, endTime); var mortgages = ((IBankAccountProvider)dataProvider).GetMortgages(accountDescriptor); var loans = ((IBankAccountProvider)dataProvider).GetLoans(accountDescriptor); accountToUpdate.Transactions = AutoMapper.Mapper.Map <IEnumerable <TransactionDoc> >(transactions); accountToUpdate.Mortgages = AutoMapper.Mapper.Map <IEnumerable <MortgageDoc> >(mortgages); accountToUpdate.Loans = AutoMapper.Mapper.Map <IEnumerable <LoanDoc> >(loans); accountToUpdate.Balance = updatedAccount.Balance; foreach (var loan in accountToUpdate.Mortgages) { loan.UserId = accountToUpdate.UserId; } foreach (var loan in accountToUpdate.Loans) { loan.UserId = accountToUpdate.UserId; } return(accountToUpdate); }
private bool IsAccountExists(BankAccount account) { var result = _accountRepository.FindAccountByCriteria(a => a.Id.Equals(account.Id)); return(result.Result != null); }