Beispiel #1
0
        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);
        }