Пример #1
0
        public void AddRecentBudgetToTop(BudgetStub budgetStub)
        {
            if (RecentBudgets == null)
            {
                RecentBudgets = new List <BudgetStub>();
            }

            if (LastBudget != null && LastBudget.BudgetPath == budgetStub.BudgetPath)
            {
                LastBudget = budgetStub;
            }

            var budgetInList = RecentBudgets.Where(rb => rb.BudgetPath == budgetStub.BudgetPath).SingleOrDefault();

            if (budgetInList == null)
            {
                MoveLastBudgetToTop();
                LastBudget = budgetStub;
            }
            else
            {
                RecentBudgets.Remove(budgetInList);
                MoveLastBudgetToTop();
                LastBudget = budgetStub;
            }
        }
Пример #2
0
        private void OpenRecentBudget(BudgetStub budgetStub)
        {
            if (budgetStub == null)
            {
                return;
            }

            ValidBudgetCheck validBudgetCheck = _budgetLoader.IsBudgetValid(budgetStub.BudgetPath);

            if (!validBudgetCheck.IsValid)
            {
                _dialogService.ShowError(validBudgetCheck.Error);
                return;
            }

            try
            {
                BudgetModel budget         = _budgetLoader.LoadBudget(budgetStub.BudgetPath);
                var         deviceSettings = _settingsProvider.Get <Device>();
                budgetStub.LastEdited = DateTime.Now;
                deviceSettings.AddRecentBudgetToTop(budgetStub);
                deviceSettings.Save();

                _mainViewModel.MountBudget(budget);
                _navigationService.NavigateTo <MainBudgetViewModel>();
            }
            catch (Exception)
            {
                _dialogService.ShowError($"There was an error opening the budget {budgetStub.BudgetPath}. It may be corrupt.");
            }
        }
Пример #3
0
        private void CreateBudget()
        {
            string budgetPath = _budgetLoader.GetBudgetSavePath(Budget.Name);

            if (budgetPath == null)
            {
                return;
            }

            InitializeDefaultCategories();

            BudgetModel budgetModel = _budgetLoader.CreateNewBudget(budgetPath, Budget);

            Account manyTransactions = new Account();

            manyTransactions.AccountType   = AccountTypes.Checking;
            manyTransactions.BudgetingType = BudgetingTypes.OnBudget;
            manyTransactions.Name          = "Many Transactions";

            Account manyMoreTransactions = new Account();

            manyMoreTransactions.AccountType   = AccountTypes.Checking;
            manyMoreTransactions.BudgetingType = BudgetingTypes.OnBudget;
            manyMoreTransactions.Name          = "Many More Transactions";

            Payee payee = new Payee();

            payee.Name = "Subway";

            Budget.Payees.Add(payee);
            budgetModel.SaveChanges();

            /*for (int i = 1; i <= 1000; i++)
             * {
             *  OpenBudget.Model.Entities.Transaction transaction = new OpenBudget.Model.Entities.Transaction();
             *  transaction.Amount = -i;
             *  transaction.Category = Budget.MasterCategories[0].Categories[0];
             *  transaction.TransactionDate = DateTime.Today;
             *  transaction.Payee = payee;
             *  if (i % 2 == 0)
             *  {
             *      manyTransactions.Transactions.Add(transaction);
             *  }
             *  else
             *  {
             *      manyMoreTransactions.Transactions.Add(transaction);
             *  }
             * }
             *
             * Budget.Accounts.Add(manyTransactions);
             * Budget.Accounts.Add(manyMoreTransactions);
             * budgetModel.SaveChanges();*/

            List <ModelEvent> events = budgetModel.BudgetStore.EventStore.GetEvents().ToList();
            EventStreamHeader header = new EventStreamHeader(events[0].EventVector, events.Last().EventVector, default(Guid), default(Guid));

            using (var stream = File.Create(Path.Combine(Path.GetDirectoryName(budgetPath), "events.json")))
                using (var writer = new EventStreamWriter(stream, header, true))
                {
                    writer.WriteEvents(events);
                }

            var        deviceSettings = _settingsProvider.Get <Device>();
            BudgetStub budgetStub     = new BudgetStub()
            {
                BudgetName = Budget.Name, BudgetPath = budgetPath, LastEdited = DateTime.Now
            };

            deviceSettings.AddRecentBudgetToTop(budgetStub);
            deviceSettings.Save();

            _mainViewModel.MountBudget(budgetModel);
            _budget.ErrorsChanged -= Budget_ErrorsChanged;
            _navigationService.NavigateTo <MainBudgetViewModel>();
        }