public void AddNewBudgetCategory()
        {
            BudgetCategoryViewModel vm       = new BudgetCategoryViewModel(this.dbFilePath);
            BudgetCategory          category = new BudgetCategory();

            Task.Run(() => vm.PopulateVMAsync(category));
            vm.CanDelete = false;
            vm.CanEdit   = true;
            vm.IsNew     = true;
            this.BudgetCategories.Add(vm);
            GroupCategories();
            this.SelectedBudgetCategory = vm;
        }
        public async Task AddNewBudgetCategoryAsync()
        {
            BudgetCategoryViewModel vm       = new BudgetCategoryViewModel(this.dbFilePath);
            BudgetCategory          category = new BudgetCategory();
            await vm.PopulateVMAsync(category);

            vm.IsNew     = true;
            vm.CanDelete = false;
            vm.CanEdit   = true;
            this.BudgetCategories.Add(vm);
            await GroupCategoriesAsync();

            this.SelectedBudgetCategory = vm;
        }
        public async Task <bool> DeleteBudgetCategoryAsync(BudgetCategoryViewModel vm)
        {
            bool deleted  = false;
            var  itemList = new List <BudgetCategoryViewModel>();

            if (vm.CanDelete && this.BudgetCategories.Contains(vm, new BudgetCategoryViewModelComparer()))
            {
                deleted = await vm.DeleteAsync();

                if (deleted)
                {
                    this.BudgetCategories.Remove(vm);
                    await GroupCategoriesAsync();
                }
            }
            else
            {
                this.WriteErrorCondition("Unable to locate provided item in the source collection");
            }

            return(deleted);
        }
        internal async Task LoadVMAsync()
        {
            using (UnitOfWork uow = new UnitOfWork(this.dbFilePath))
            {
                var _results = await uow.GetAllBudgetCategoriesAsync();

                var _tempList = new List <BudgetCategoryViewModel>();
                if (_results.Successful)
                {
                    foreach (var category in _results.Results.OrderByDescending(c => c.budgetAmount))
                    {
                        var vm = new BudgetCategoryViewModel(this.dbFilePath);
                        vm.CanEdit   = true;
                        vm.CanDelete = true;
                        await vm.PopulateVMAsync(category);

                        this.BudgetCategories.Add(vm);
                    }
                    await GroupCategoriesAsync();
                }
                else
                {
                    if (_results.WorkException != null)
                    {
                        WriteErrorCondition(_results.WorkException);
                    }
                    else if (!string.IsNullOrEmpty(_results.Message))
                    {
                        WriteErrorCondition(_results.Message);
                    }
                    else
                    {
                        WriteErrorCondition("An unknown error has occurred");
                    }
                }
            }
        }