public virtual void AddCompletedOrder(AbstractCompletedOrder completedOrder) { if (completedOrder == null) { throw new ArgumentNullException(nameof(completedOrder), "Parameter is null."); } lock (_locker) { _completedOrders.Add(completedOrder.Number, completedOrder); } }
private async Task CompleteOrder(AbstractOrder order) { AbstractCompletedOrder completedOrder = await PreparedOrder(order); // Будем считать, что выбирает ближайшее окно.. или наименее загруженное var productDeliveryWindow = Restaurant.ProductDeliveryWindowsByNumber.ElementAt( _random.Next(Restaurant.ProductDeliveryWindowsByNumber.Count())).Value; productDeliveryWindow.AddCompletedOrder(completedOrder); OrderCompleted(this, new OrderCompletedEventArgs(new CompletdOrderInfo(order.Number, productDeliveryWindow.WindowNumber))); _isFree = true; }
public virtual AbstractCompletedOrder ExtractCompletedOrderByNumber(int orderNumber) { AbstractCompletedOrder completedOrder = null; lock (_locker) { if (!_completedOrders.TryGetValue(orderNumber, out completedOrder)) { return(null); // Стоит ли тут бросать экзепшн, если такого заказа нет? } } CompletedOrderTaken(this, new CompletedOrderTakenEventArgs(completedOrder)); return(completedOrder); }
public CompletedOrderTakenEventArgs(AbstractCompletedOrder completedOrder) { CompletedOrder = completedOrder ?? throw new ArgumentNullException(nameof(completedOrder), "Argument is null."); }