private void AddMoneytoBalance_Click(object sender, RoutedEventArgs e)
        {
            var f = UserPurseListView.SelectedIndex + 1;

            using (var context = new VMDatabaseEntities())
            {
                var query = from st in context.UserPurses where st.Id == f select st;

                var queryResult = query.FirstOrDefault <UserPurse>();

                if (queryResult.NumberOfBills > 0)
                {
                    var balanceNow = Convert.ToInt32(BalanceTextblock.Text);

                    queryResult.NumberOfBills -= 1;
                    context.SaveChanges();

                    BalanceTextblock.Text = (balanceNow + queryResult.NominalValue).ToString();

                    UserPurseListView.Items.Clear();

                    ShowUserPurse();
                }

                else if (queryResult.NumberOfBills == 0)
                {
                    MessageBox.Show("Not enough bills");
                    return;
                }
            }
        }
        void ShowUserPurse()
        {
            using (VMDatabaseEntities context = new VMDatabaseEntities())
            {
                var query = from b in context.UserPurses
                            select b;

                foreach (var item in query)
                {
                    UserPurseListView.Items.Add(new UserPurse {
                        NominalValue = item.NominalValue, NumberOfBills = item.NumberOfBills
                    });
                }
            }
        }
        void ShowAssortment()
        {
            using (VMDatabaseEntities context = new VMDatabaseEntities())
            {
                var query = from b in context.VendingMachineAssortments
                            select b;

                foreach (var item in query)
                {
                    AssortmentListView.Items.Add(new VendingMachineAssortment {
                        ProductName = item.ProductName, ProductAmount = item.ProductAmount, ProductCost = item.ProductCost
                    });
                }
            }
        }
        void ShowChangeBalance()
        {
            using (VMDatabaseEntities context = new VMDatabaseEntities())
            {
                var query = from b in context.VendingMachineChangePurses
                            select b;

                foreach (var item in query)
                {
                    VMChangeListView.Items.Add(new VendingMachineChangePurse {
                        NominalValue = item.NominalValue, NumberOfBills = item.NumberOfBills
                    });
                }
            }
        }
        private void ChangeGiving_Click(object sender, RoutedEventArgs e)
        {
            var balance = Convert.ToInt32(BalanceTextblock.Text);

            using (var context = new VMDatabaseEntities())
            {
                if (balance == 0)
                {
                    MessageBox.Show("balance 0");
                    return;
                }
                else if (balance > 0)
                {
                    var queryVMChange = from st in context.VendingMachineChangePurses
                                        select st;

                    foreach (var item in queryVMChange)
                    {
                        while (balance / item.NominalValue >= 1 && balance != 0)
                        {
                            var query = from st in context.UserPurses where st.NominalValue == item.NominalValue select st;

                            var queryResult = query.FirstOrDefault <UserPurse>();

                            balance -= item.NominalValue;

                            item.NumberOfBills -= 1;

                            queryResult.NumberOfBills += 1;
                        }
                    }

                    BalanceTextblock.Text = balance.ToString();
                    context.SaveChanges();
                    VMChangeListView.Items.Clear();
                    ShowChangeBalance();
                    UserPurseListView.Items.Clear();
                    ShowUserPurse();
                    MessageBox.Show("Change given");
                }
            }
        }
        private void BuyButton_Click(object sender, RoutedEventArgs e)
        {
            var f = AssortmentListView.SelectedIndex + 1;

            using (var context = new VMDatabaseEntities())
            {
                var query = from st in context.VendingMachineAssortments where st.Id == f select st;

                var queryResult = query.FirstOrDefault <VendingMachineAssortment>();

                var balance = Convert.ToInt32(BalanceTextblock.Text);

                if (balance >= queryResult.ProductCost && queryResult.ProductAmount > 0)
                {
                    queryResult.ProductAmount -= 1;

                    context.SaveChanges();

                    AssortmentListView.Items.Clear();

                    ShowAssortment();

                    balance -= queryResult.ProductCost;

                    BalanceTextblock.Text = balance.ToString();

                    MessageBox.Show("Thanks for buying " + queryResult.ProductName);
                }
                else if (balance < queryResult.ProductCost)
                {
                    MessageBox.Show("Insufficient funds in account");
                    return;
                }
                else if (queryResult.ProductAmount == 0)
                {
                    MessageBox.Show("No " + queryResult.ProductName);
                }
            }
        }