public async Task Initialize() { await _repository.Initialize(); await AddTransactionsViewModel.Initialize(); SearchTransactions.Initialize(); var i = 0; while (true) { var monthBalanceViewModel = new MonthBalanceViewModel(DateTime.Now.PreviousMonth(i), _repository, _windowService); await monthBalanceViewModel.Initialize(); if (monthBalanceViewModel.TotalBalance.Income > 0 || monthBalanceViewModel.TotalBalance.Expense < 0 || i == 0) // always add current month { monthBalanceViewModel.DetailTransactionsRequested += async(sender, args) => { await SearchTransactions.SearchForDatesAndCategory(args.DateFrom, args.DateTo, args.Category); }; MonthBalanceViewModels.Add(monthBalanceViewModel); i++; } else { break; } } await CheckGoalsButtons(); }
private async Task OnTransactionAddedDeleted(Transaction transaction) { var month = transaction.Date.FirstDayOfMonth(); var monthViewModel = MonthBalanceViewModels.FirstOrDefault(x => x.Month.FirstDayOfMonth() == month); if (monthViewModel != null) { await monthViewModel.RecalculateBalances(transaction.Category); } }
private async Task OnTransactionModified(Transaction transactionOld, Transaction transactionNew) { var monthViewModelOld = MonthBalanceViewModels.FirstOrDefault(x => x.Month.FirstDayOfMonth() == transactionOld.Date.FirstDayOfMonth()); var monthViewModelNew = MonthBalanceViewModels.FirstOrDefault(x => x.Month.FirstDayOfMonth() == transactionNew.Date.FirstDayOfMonth()); if (monthViewModelOld != null) { await monthViewModelOld.RecalculateBalances(transactionOld.Category); } if (monthViewModelNew != null) { await monthViewModelNew.RecalculateBalances(transactionNew.Category); } }