private void OnAddNewExpenseExecute(ExpenseBucket expense) { Dirty = true; var newExpense = Expenses.AddNew(); Debug.Assert(newExpense != null); newExpense.Amount = 0; // New buckets must be created because the one passed in, is a single command parameter instance to be used as a type indicator only. // If it was used, the same instance would overwritten each time an expense is created. if (expense is SpentMonthlyExpenseBucket) { newExpense.Bucket = new SpentMonthlyExpenseBucket(string.Empty, string.Empty); } else if (expense is SavedUpForExpenseBucket) { newExpense.Bucket = new SavedUpForExpenseBucket(string.Empty, string.Empty); } else if (expense is SavingsCommitmentBucket) { newExpense.Bucket = new SavingsCommitmentBucket(string.Empty, string.Empty); } else { throw new InvalidCastException("Invalid type passed to Add New Expense: " + expense); } Expenses.RaiseListChangedEvents = true; newExpense.PropertyChanged += OnExpenseAmountPropertyChanged; }
public LedgerBucket TrackNewBudgetBucket(ExpenseBucket bucket, Account storeInThisAccount) { if (bucket == null) { throw new ArgumentNullException(nameof(bucket)); } if (storeInThisAccount == null) { throw new ArgumentNullException(nameof(storeInThisAccount)); } var newLedger = this.ledgerBucketFactory.Build(bucket.Code, storeInThisAccount); return(LedgerBook.AddLedger(newLedger)); }