Пример #1
0
        private void ToOrderBills()
        {
            try
            {
                IOrderedEnumerable <Bill> bills = null;

                switch (SelectedOrder)
                {
                case "Descrição - Crescente":
                    bills = Bills.OrderBy(o => o.Description);
                    break;

                case "Descrição - Decrescente":
                    bills = Bills.OrderByDescending(o => o.Description);
                    break;

                default:
                    return;
                }

                Bills = new ObservableRangeCollection <Bill>(bills);
                OnPropertyChanged("Bills");
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #2
0
        /// <summary>
        /// Withdraw an amount of money from the register.
        /// </summary>
        /// <param name="amount">Amount of money to be withdrawn.</param>
        /// <returns>Response message for display to user.</returns>
        public Response Withdraw(int amount)
        {
            Response response = new Response();

            if (amount > 0)
            {
                // amount = 100 * (amount / 100) + 50 * (amount / 50) + 20 * (amount / 20) + 10 * (amount / 10) + 5 * (amount / 5) + 1 * (amount / 1)

                List <BillBase> sieve = Bills.OrderByDescending(item => item.Value).ToList();

                if (sieve.Count == 0)
                {
                    response.Message += "\n";
                    response.Message += "Failure: Insufficient Funds";
                    response.Message += "\n";
                    return(response);
                }

                int remainingAmount = amount;

                List <BillBase> withdraw = new List <BillBase>();

                while (remainingAmount != 0)
                {
                    BillBase biggestBill = sieve.FirstOrDefault();

                    if (biggestBill != null)
                    {
                        if (remainingAmount - biggestBill.Value < 0)
                        {
                            sieve.RemoveAll(item => item.Code == biggestBill.Code);
                        }
                        else
                        {
                            withdraw.Add(biggestBill);
                            sieve.Remove(biggestBill);

                            remainingAmount -= biggestBill.Value;
                        }
                    }
                    else
                    {
                        response.Message += "\n";
                        response.Message += "Failure: Insufficient Funds";
                        response.Message += "\n";
                        return(response);
                    }
                }

                if (remainingAmount == 0)
                {
                    response.Message += "\n";
                    response.Message += "Success: Dispensed $" + Convert.ToString(amount);
                    response.Message += "\n";

                    foreach (BillBase bill in withdraw)
                    {
                        Bills.Remove(bill);
                    }

                    response.Message += FullInventory().Message;
                }
            }

            return(response);
        }
        private void RefreshBillListItems()
        {
            switch (_SortOptions.GetLastOption())
            {
            case "Id":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.Id).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.Id).ToList <DBConnection.Bill>();
                }
                break;

            case "Category":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.Category).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.Category).ToList <DBConnection.Bill>();
                }
                break;

            case "DueDate":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.DueDate).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.DueDate).ToList <DBConnection.Bill>();
                }
                break;

            case "ForMonth":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.ForMonth).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.ForMonth).ToList <DBConnection.Bill>();
                }
                break;

            case "Amount":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.Amount).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.Amount).ToList <DBConnection.Bill>();
                }
                break;

            case "Paid":
                if (_SortOptions.GetDescending())
                {
                    _DBConnection.Bills = Bills.OrderByDescending(x => x.Paid).ToList <DBConnection.Bill>();
                }
                else
                {
                    _DBConnection.Bills = Bills.OrderBy(x => x.Paid).ToList <DBConnection.Bill>();
                }
                break;
            }

            _DBConnection.ReOrderMonthBills();

            Bills.Clear();
            MonthBills.Clear();

            foreach (DBConnection.Bill bill in _DBConnection.Bills)
            {
                Bills.Add(bill);
            }

            foreach (DBConnection.Bill bill in _DBConnection.MonthBills)
            {
                MonthBills.Add(bill);
            }
        }