コード例 #1
0
 public AccountHistoryDto GetAccountHistory(long accountId)
 {
     using (var context = new CashFlowContext())
     {
         DataAccess.EF.Account efAccount = context.Account
                                           .Include(a => a.AccountBalance)
                                           .Include(a => a.TransferAccountFrom).ThenInclude(t => t.AccountTo)
                                           .Include(a => a.TransferAccountTo).ThenInclude(t => t.AccountFrom)
                                           .SingleOrDefault(t => t.Id == accountId);
         if (efAccount != null)
         {
             AccountBalance    lastAccountBalance = efAccount.AccountBalance.OrderByDescending(b => b.StartDate).First();
             AccountHistoryDto account            = AccountHistoryMapper.Map(
                 efAccount,
                 lastAccountBalance,
                 lastAccountBalance.Balance - efAccount.TransferAccountFrom.Sum(t => t.Amount) + efAccount.TransferAccountTo.Sum(t => t.Amount),
                 efAccount.TransferAccountTo.OrderByDescending(t => t.TransferDate),
                 efAccount.TransferAccountFrom.OrderByDescending(t => t.TransferDate));
             return(account);
         }
         else
         {
             return(null);
         }
     }
 }
コード例 #2
0
        private ReportAccountBalanceDto CheckAccountHistoryDto(AccountHistoryDto entryToCheck, Guid accountId)
        {
            ReportAccountBalanceDto result = new ReportAccountBalanceDto();

            if (entryToCheck.SourceAccountId == accountId)
            {
                result.AccountId = entryToCheck.SourceAccountId;
                result.Balance   = entryToCheck.SourceBalance;
                result.DueDate   = entryToCheck.DueDateTime;
            }
            else
            {
                result.AccountId = entryToCheck.DestinationAccounId;
                result.Balance   = entryToCheck.DestinationBalance;
                result.DueDate   = entryToCheck.DueDateTime;
            }
            return(result);
        }
コード例 #3
0
        public static AccountHistoryDto Map(Account account, AccountBalance startBalance, decimal currentBalance, IEnumerable <Transfer> incomingTrasnfers, IEnumerable <Transfer> outgoingTransfers)
        {
            if (account == null)
            {
                return(null);
            }
            AccountHistoryDto accountDto = new AccountHistoryDto();

            accountDto.Id   = account.Id;
            accountDto.Name = account.Name;
            accountDto.AccountStartBalance   = startBalance.Balance;
            accountDto.AccountCurrentBalance = currentBalance;
            foreach (var transfer in incomingTrasnfers)
            {
                accountDto.IncomingTransfers.Add(TransferMapper.Map(transfer));
            }
            foreach (var transfer in outgoingTransfers)
            {
                accountDto.OutgoingTransfers.Add(TransferMapper.Map(transfer));
            }
            int      numberOfDays = (int)Math.Ceiling((DateTime.Now - startBalance.StartDate).TotalDays);
            DateTime accountBalanceHistoryDate = startBalance.StartDate;
            decimal  historyBalance            = startBalance.Balance;

            for (int i = 0; i < numberOfDays; i++)
            {
                historyBalance = historyBalance
                                 + incomingTrasnfers.Where(t => t.TransferDate.Date == accountBalanceHistoryDate.Date).Sum(t => t.Amount)
                                 - outgoingTransfers.Where(t => t.TransferDate.Date == accountBalanceHistoryDate.Date).Sum(t => t.Amount);
                accountDto.AccountBalanceHistory.Add(new AccountBalanceHistoryDto
                {
                    BalanceDate = accountBalanceHistoryDate,
                    Balance     = historyBalance
                });
                accountBalanceHistoryDate = accountBalanceHistoryDate.AddDays(1);
            }
            return(accountDto);
        }