private void DeleteExecute(object obj) { if (m_deleteConfirmationViewService.Show("budget transaction")) { Transactions.Remove(SelectedTransaction); SelectedTransaction = null;// is this necessary? } }
private void CreateExecute(object obj) { IBudgetTransactionItemViewModel initialTransactionViewModel = Transactions .Single(t => t.Type == BudgetTransactionType.Initial); IAccountLinkViewModel suggestedCreditAccount = initialTransactionViewModel.SelectedDebitAccount; // For the debit account, we want the next unused asset account. // Failing that, we want an asset account. // Failing that, we'll take anything! IEnumerable <IAccountLinkViewModel> assetAccountLinks = m_accountLinks .Where(alvm => alvm.Type == AccountType.Asset && alvm != suggestedCreditAccount); IEnumerable <IAccountLinkViewModel> usedAssetAccountLinks = Transactions .Select(t => t.SelectedDebitAccount) .Where(al => al.Type == AccountType.Asset); IEnumerable <IAccountLinkViewModel> unusedAssetAccountLinks = assetAccountLinks .Except(usedAssetAccountLinks); IAccountLinkViewModel suggestedDebitAccount = null; if (unusedAssetAccountLinks.Any()) { suggestedDebitAccount = unusedAssetAccountLinks.First(); } else if (usedAssetAccountLinks.Any()) { suggestedDebitAccount = usedAssetAccountLinks.First(); } else if (m_accountLinks.Any()) { suggestedDebitAccount = m_accountLinks.First(); } var newTransaction = new BudgetTransaction { CreditAccount = suggestedCreditAccount.ToAccountLink(), DebitAccount = suggestedDebitAccount.ToAccountLink(), Amount = 0m }; Transactions.Insert( Transactions.Count - 1,// we maintain that the surplus transaction is last, so - 1 CreateItemViewModel(newTransaction, BudgetTransactionType.Regular) ); }
private IBudgetTransactionItemViewModel CreateItemViewModel( BudgetTransaction budgetTransaction, BudgetTransactionType type) { IBudgetTransactionItemViewModel transactionViewModel = m_budgetTransactionItemViewModelFactory.Create( m_accountLinks, budgetTransaction, type ); if (type != BudgetTransactionType.Surplus) { ((BaseViewModel)transactionViewModel).PropertyChanged += OnItemPropertyChanged; } return(transactionViewModel); }
public Budget ToBudget() { IBudgetTransactionItemViewModel initialTransaction = TransactionListViewModel.Transactions .Single(t => t.Type == BudgetTransactionType.Initial); IBudgetTransactionItemViewModel surplusTransaction = TransactionListViewModel.Transactions .Single(t => t.Type == BudgetTransactionType.Surplus); IEnumerable <IBudgetTransactionItemViewModel> regularTransactions = TransactionListViewModel.Transactions.Where(t => t.Type == BudgetTransactionType.Regular); Budget budget = new Budget { BudgetId = m_budgetId, Name = Name, Period = SelectedPeriod, InitialTransaction = initialTransaction.ToBudgetTransaction(), Transactions = regularTransactions.Select(t => t.ToBudgetTransaction()), SurplusTransaction = surplusTransaction.ToBudgetTransaction(), }; return(budget); }
private void CalculateSurplusAmount() { IBudgetTransactionItemViewModel initialTransaction = Transactions.Single(t => t.Type == BudgetTransactionType.Initial); decimal surplusAmount = initialTransaction.Amount; IEnumerable <IBudgetTransactionItemViewModel> regularTransactions = Transactions.Where(t => t.Type == BudgetTransactionType.Regular); foreach (IBudgetTransactionItemViewModel regularTransaction in regularTransactions) { if (regularTransaction.SelectedCreditAccount == initialTransaction.SelectedDebitAccount) { surplusAmount -= regularTransaction.Amount; } } IBudgetTransactionItemViewModel surplusTransaction = Transactions.Single(t => t.Type == BudgetTransactionType.Surplus); surplusTransaction.Amount = surplusAmount; }