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; } }
/// <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); } }