/// <summary> /// Used when a person wants to remove an item he has ordered /// </summary> public void RemoveOneOrderedItem(Person person, OrderableItem item) { OrderLine itemToRemove = OrderLines.FirstOrDefault(x => x.Owner.Equals(person) && x.Item.Equals(item)); if (itemToRemove != null) { if (person.State != States.Ordering) { person.State = States.Ordering; person.OnPropertyChanged("Status"); } OrderLines.Remove(itemToRemove); person.OnPropertyChanged("OrderLines"); } }
/// <summary> /// Used when a person wants to order an item from the menu /// </summary> public void OrderOneItem(Person person, OrderableItem item) { if (person.State != States.Ordering) { person.State = States.Ordering; person.OnPropertyChanged("Status"); } OrderLines.Add(new OrderLine(person, item)); person.OnPropertyChanged("OrderLines"); }
/// <summary> /// Used when a person wants to pay for everything another person has ordered /// </summary> public void PayForPerson(Person payer, Person target) { if (!payer.Equals(target) && target.State == States.Checkout) { if (payer.State != States.Checkout) { payer.State = States.Checkout; payer.OnPropertyChanged("Status"); } foreach (OrderLine line in OrderLines.Where(x => x.Owner.Equals(target))) { line.PayForAll(payer); } payer.OnPropertyChanged("OrderLines"); target.OnPropertyChanged("OrderLines"); } }
/// <summary> /// Used when a person pushed the confirm button, /// either for confirming an order or a bill /// </summary> public void NextStateForPerson(Person person, States newState) { person.State = newState; if (Persons.Count(x => x.State.Equals(person.State)) == Persons.Count || (GlobalState == States.Checkout && OrderLines.Count == 0)) { NextGlobalState(); } person.OnPropertyChanged("Status"); }