private void SetTransactionLines(TransactionViewModel viewModel, AggregationData aggregatedTransactionData) { var aggregatedLevyTransactions = aggregatedTransactionData.TransactionLines .Where(t => t.TransactionType == TransactionItemType.Declaration) .GroupBy(t => t.DateCreated.Date) .Select(grp => { var firstLevyTransactionInDay = grp.First(); return(new TransactionLine { AccountId = firstLevyTransactionInDay.AccountId, DateCreated = firstLevyTransactionInDay.DateCreated, Amount = grp.Sum(ltl => ltl.Amount), TransactionType = TransactionItemType.Declaration, Description = firstLevyTransactionInDay.Description, PayrollDate = firstLevyTransactionInDay.PayrollDate, PayrollMonth = firstLevyTransactionInDay.PayrollMonth, PayrollYear = firstLevyTransactionInDay.PayrollYear }); }); var newTransactionLines = aggregatedTransactionData.TransactionLines .Where(t => t.TransactionType != TransactionItemType.Declaration) .Union(aggregatedLevyTransactions) .ToArray(); viewModel.Data.TransactionLines = newTransactionLines; }
private TransactionViewModel BuildTransactionViewModel(AggregationData aggregationData, int year, int month) { var viewModel = new TransactionViewModel { Data = new AggregationData { AccountId = aggregationData.AccountId, HashedAccountId = aggregationData.HashedAccountId, }, CurrentBalance = aggregationData.Balance }; SetTransactionLines(viewModel, aggregationData); return(viewModel); }