public void FindTest() { Customer customer = new Customer(); Order order = new Order { OwnerCustomer = customer, }; OrderGoods goods = new OrderGoods { OwnerOrder = order, }; OrderReady ready = new OrderReady(); OrderReadyGoods readyGoods = new OrderReadyGoods { OwnerGoods = goods, }; OrderWarehouse warehouse = new OrderWarehouse { OwnerOrder = order, }; OrderWarehouseGoods warehouseGoods = new OrderWarehouseGoods { OwnerGoods = goods, OwnerWarehouse = warehouse, }; NewOrderWarehouseGoods newWarehouseGoods = new NewOrderWarehouseGoods { OwnerGoods = goods, OwnerWarehouse = warehouse, }; OrderDelivery delivery = new OrderDelivery { OwnerOrder = order, }; OrderDeliveryGoods deliveryGoods = new OrderDeliveryGoods { OwnerGoods = goods, OwnerDelivery = delivery, }; OrderPayment payment = new OrderPayment { OwnerOrder = order, }; DataSourceFinder finder = DataSourceFinder.Instance; Assert.AreSame(customer, finder.Find <Customer>(warehouseGoods)); Assert.AreSame(customer, finder.Find <Customer>(newWarehouseGoods)); Assert.AreSame(customer, finder.Find <Customer>(deliveryGoods)); Assert.AreSame(customer, finder.Find <Customer>(readyGoods)); Assert.AreSame(customer, finder.Find <Customer>(payment)); Assert.IsNull(finder.Find <Customer>(ready)); Assert.IsNull(finder.Find <A>(new C())); }
private void CheckIfSomethingToDo(DateTime clockTime) { for (int j = 0; j < _beingPrepared.Count; j++) { if (clockTime >= _beingPrepared[j].TimeReady) { _beingPrepared[j].OrderType = OrderType.Ready; OrderReady?.Invoke(this, _beingPrepared[j]); _beingPrepared.RemoveAt(j); j -= 1; } } for (int i = 0; i < _orders.Count; i++) { if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.Order) { OrderReady?.Invoke(this, _orders[i]); if (!GuestBills.ContainsKey(_orders[i].Name)) { GuestBills.Add(_orders[i].Name, _orders[i].Article.Price); } else { GuestBills[_orders[i].Name] += _orders[i].Article.Price; } _beingPrepared.Add(_orders[i]); _orders.RemoveAt(i); i -= 1; } else if (clockTime >= _orders[i].TimeForAction && _orders[i].OrderType == OrderType.ToPay) { OrderReady?.Invoke(this, _orders[i]); _orders.RemoveAt(i); } } }
public PizzaMaker() { ordersToMake = new Queue <Order>(); TimeToMakeAPizza = TimeSpan.FromMinutes(3.0); fakeTime = FakeTime.Instance; Task.Run(async() => { for (;;) { if (ordersToMake.Count > 0) { //i have to make that order var order = ordersToMake.Dequeue(); await fakeTime.Wait((int)TimeToMakeAPizza.TotalMinutes); if (OrderReady != null) { OrderReady.Invoke(this, order); } } await Task.Delay(50); } }); }
protected virtual void OnOrderReady(EventArgs e) { OrderReady?.Invoke(this, e); }