コード例 #1
0
        public async Task <BudgetItemViewModel> GetBudgetItemVM(int itemId, BudgetItemType itemType)
        {
            BudgetItemViewModel vm = new BudgetItemViewModel(this.dbFilePath);
            await vm.LoadVMAsync(itemId, itemType);

            return(vm);
        }
        public void AmountNegative_ExpectPositiveString()
        {
            decimal value         = -100m;
            var     viewModel     = new BudgetItemViewModel(new BudgetItem("id", "name", value, BudgetItemType.Debt));
            string  expectedValue = Math.Abs(value).ToCurrencyString();

            viewModel.Amount.Should().Be(expectedValue);
        }
        public void Constructor_ValidModel_ExpectPresentation()
        {
            var budgetItem = new BudgetItem("id", "name", 100.42m, BudgetItemType.Debt);
            var viewModel  = new BudgetItemViewModel(budgetItem);

            viewModel.Name.Should().Be(budgetItem.Name);
            viewModel.Amount.Should().Be(budgetItem.Amount.ToCurrencyString());
        }
コード例 #4
0
        protected async void OnNewItemClicked(object sender, EventArgs e)
        {
            BudgetItemEdit      editor  = new BudgetItemEdit();
            BudgetItemViewModel newItem = await vm.AddBudgetItemAsync();

            editor.BindingContext = vm.SelectedBudgetItem;
            await Navigation.PushAsync(editor);
        }
コード例 #5
0
        public void Constructor_ValidModel_ExpectPresentation()
        {
            BudgetItem budgetItem = new BudgetItem("test name", BudgetItemType.Debt, 123.45m);

            BudgetItemViewModel viewModel = new BudgetItemViewModel(budgetItem);

            viewModel.Name.Should().Be(budgetItem.Name);
            viewModel.Amount.Should().Be(budgetItem.Amount.ToCurrencyString());
        }
コード例 #6
0
        public void Amount_NegativeInBudgetItem_ExpectPositiveInString()
        {
            decimal             value     = -4325.32m;
            BudgetItemViewModel viewModel = new BudgetItemViewModel(new BudgetItem("test name", amount: value));

            string expectedValue = Math.Abs(value).ToCurrencyString();

            viewModel.Amount.Should().Be(expectedValue);
        }
コード例 #7
0
 private void UserControl_Loaded(object sender, RoutedEventArgs e)
 {
     _vm = DataContext as BudgetItemViewModel;
     if (_vm == null)
     {
         return;
     }
     _vm.PropertyChanged += _vm_PropertyChanged;
 }
コード例 #8
0
 static BudgetItemViewModel formBudgetItemVM(BudgetItemViewModel item, IEnumerable <BudgetItemViewModel> allItems)
 {
     item.Items = new ObservableCollection <BudgetItemViewModel>();
     foreach (var ch in allItems.Where(i => i.IdParent == item.Id).OrderBy(_OrderByDefaultExpression.Compile()))
     {
         var chVM = formBudgetItemVM(ch, allItems);
         item.Items.Add(chVM);
     }
     return(item);
 }
コード例 #9
0
        public void Name_Set_ExpectValueAsString()
        {
            BudgetItem          budgetItem = new BudgetItem("test name");
            BudgetItemViewModel viewModel  = new BudgetItemViewModel(budgetItem);
            string newName = "new name";

            viewModel.Name = newName;

            viewModel.Name.Should().Be(newName);
        }
コード例 #10
0
        public void Amount_Set_ExpectValueAsString()
        {
            BudgetItem          budgetItem = new BudgetItem("test name");
            BudgetItemViewModel viewModel  = new BudgetItemViewModel(budgetItem);
            decimal             value      = 4325.32m;

            viewModel.Amount = value.ToCurrencyString();

            viewModel.Amount.Should().Be(value.ToCurrencyString());
        }
コード例 #11
0
        //public async void OnBackClicked(object sender, EventArgs e)
        //{
        //    await Navigation.PopModalAsync();
        //}


        public async void btnNewBudgetItem_Clicked(object sender, EventArgs eventArgs)
        {
            if (vm == null)
            {
                vm = this.BindingContext as BudgetCategoryViewModel;
            }

            BudgetItemEdit      editor  = new BudgetItemEdit();
            BudgetItemViewModel newItem = await vm.AddBudgetItemAsync();

            editor.BindingContext = newItem;
            await Navigation.PushAsync(editor);

            //await Navigation.PushModalAsync(editor);
        }
コード例 #12
0
        public void Name_Set_ExpectPropertyChanged()
        {
            var budgetItem = new BudgetItem("id", "name");
            var viewModel  = new BudgetItemViewModel(budgetItem);

            string newName    = "new name";
            bool   wasChanged = false;

            viewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(viewModel.Name))
                {
                    wasChanged = true;
                }
            };

            viewModel.Name = newName;
            wasChanged.Should().BeTrue();
        }
コード例 #13
0
        public void Amount_Set_ExpectPropertyChanged()
        {
            var budgetItem = new BudgetItem("id", "name");
            var viewModel  = new BudgetItemViewModel(budgetItem);

            decimal newAmount  = -220m;
            bool    wasChanged = false;

            viewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(viewModel.Amount))
                {
                    wasChanged = true;
                }
            };

            viewModel.Amount = newAmount.ToCurrencyString();
            wasChanged.Should().BeTrue();
        }
コード例 #14
0
        public void Name_Set_ExpectPropertyChanged()
        {
            BudgetItem          budgetItem = new BudgetItem("test name");
            BudgetItemViewModel viewModel  = new BudgetItemViewModel(budgetItem);

            string newName    = "new name";
            bool   wasChanged = false;

            viewModel.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == nameof(viewModel.Name))
                {
                    wasChanged = true;
                }
            };

            viewModel.Name = newName;

            wasChanged.Should().BeTrue();
        }
コード例 #15
0
        public void Amount_Set_ExpectPropertyChanged()
        {
            BudgetItem          budgetItem = new BudgetItem("test name");
            BudgetItemViewModel viewModel  = new BudgetItemViewModel(budgetItem);

            decimal newAmount  = -4325.32m;
            bool    wasChanged = false;

            viewModel.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == nameof(viewModel.Amount))
                {
                    wasChanged = true;
                }
            };

            viewModel.Amount = newAmount.ToCurrencyString();

            wasChanged.Should().BeTrue();
        }
コード例 #16
0
 protected async override void OnAppearing()
 {
     base.OnAppearing();
     vm = this.BindingContext as BudgetItemViewModel;
 }
コード例 #17
0
 protected override void OnDisappearing()
 {
     base.OnDisappearing();
     vm = null;
 }
コード例 #18
0
        /// <summary>
        /// Получить доступные групповые статьи в иерархическом виде, в которые можно назначить родительскими для указанной статьи
        /// Список всех статей BudgetItemVMList должен быть заранее загружен и иерархически структурирован в BudgetItemTreeVMList
        /// </summary>
        public ObservableCollection <BudgetItemViewModel> GetGroupingBudgetItemTreeVMAvailableForChildBudgetItem(BudgetItemViewModel childItem)
        {
            if (BudgetItemVMList == null)
            {
                throw new Exception("BudgetItemVMList was not load!");
            }
            if (BudgetItemTreeVMList == null)
            {
                throw new Exception("BudgetItemTreeVMList was not load!");
            }

            GroupingBudgetItemTreeVMList = new ObservableCollection <BudgetItemViewModel>();
            bool needExcludeChildItem = childItem != null && childItem.IsGroupingItem && childItem.Id > 0;

            foreach (var item in BudgetItemVMList.Where(i => i.IsGroupingItem))
            {
                item.GroupItems = new ObservableCollection <BudgetItemViewModel>();
                if (item.Items == null)
                {
                    continue;
                }
                var onlyGroupItems = item.Items.Where(i => i.IsGroupingItem);
                if (needExcludeChildItem)
                {
                    onlyGroupItems = onlyGroupItems.Where(i => i.Id != childItem.Id);
                }
                foreach (var i in onlyGroupItems.OrderBy(_OrderByDefaultExpression.Compile()))
                {
                    item.GroupItems.Add(i);
                }
            }
            var tree = BudgetItemTreeVMList.Where(i => i.IsGroupingItem);

            if (needExcludeChildItem)
            {
                tree = tree.Where(i => i.Id != childItem.Id);
            }
            GroupingBudgetItemTreeVMList = new ObservableCollection <BudgetItemViewModel>();
            foreach (var item in tree.OrderBy(_OrderByDefaultExpression.Compile()))
            {
                GroupingBudgetItemTreeVMList.Add(item);
            }

            return(GroupingBudgetItemTreeVMList);
        }