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(); }
public MainViewModel(IRepository repository, IWindowService windowService) { _repository = repository; _windowService = windowService; _windowService = windowService; MonthBalanceViewModels = new ObservableCollection <MonthBalanceViewModel>(); _repository.TransactionAdded += async(s, a) => { await OnTransactionAddedDeleted(a.Transaction); }; _repository.TransactionDeleted += async(s, a) => { await OnTransactionAddedDeleted(a.Transaction); }; _repository.TransactionUpdated += async(s, a) => { await OnTransactionModified(a.OldTransaction, a.NewTransaction); }; _repository.TransactionBulkUpdated += async(s, a) => { await OnTransactionBulkModified(); }; _repository.GoalsUpdated += async(s, a) => await CheckGoalsButtons(); AddTransactionsViewModel = new AddTransactionsViewModel(_repository, _windowService); AddTransactionsViewModel.UseAsTemplateRequested += (s, a) => AddTransactionsViewModel.UseTransactionAsTemplate(a.Transaction); SearchTransactions = new SearchTransactionListViewModel(_repository, _windowService); SearchTransactions.UseAsTemplateRequested += (s, a) => AddTransactionsViewModel.UseTransactionAsTemplate(a.Transaction); }