diff --git a/ConfectionaryBusinessLogic/WorkModeling.cs b/ConfectionaryBusinessLogic/WorkModeling.cs index 6402635..c9bba89 100644 --- a/ConfectionaryBusinessLogic/WorkModeling.cs +++ b/ConfectionaryBusinessLogic/WorkModeling.cs @@ -35,24 +35,15 @@ namespace ConfectioneryBusinessLogic _logger.LogWarning("DoWork. Implementers is null"); return; } - var orders = _orderLogic.ReadList(new OrderSearchModel { Statusses = new() { OrderStatus.Принят } }); + // Поскольку у нас могут быть заказы в работе мы не дожны заканчивать работы, если нет Принятых заказов + // Поэтому находим заказы в работе и продолжаем работу, если они есть + var orders = _orderLogic.ReadList(new OrderSearchModel { Statusses = new() { OrderStatus.Принят, OrderStatus.Выполняется } }); if (orders == null || orders.Count == 0) { - // Поскольку у нас могут быть заказы в работе мы не дожны заканчивать работы, если нет Принятых заказов - // Поэтому находим заказы в работе и продолжаем работу, если они есть - var workingOrders = _orderLogic.ReadList(new() { Statusses = new() { OrderStatus.Выполняется } }); - if (workingOrders == null || workingOrders.Count == 0) - { - _logger.LogWarning("DoWork. Orders is null or empty"); - return; - } - else - { - _logger.LogWarning("DoWork. Еще есть заказы в работе. для {Count} заказов", workingOrders.Count); - } + _logger.LogWarning("DoWork. Orders is null or empty"); + return; } - else - _logger.LogDebug("DoWork for {Count} orders", orders.Count); + _logger.LogDebug("DoWork for {Count} orders", orders.Count); foreach (var implementer in implementers) { Task.Run(() => WorkerWorkAsync(implementer, orders)); @@ -70,7 +61,7 @@ namespace ConfectioneryBusinessLogic { return; } - await RunOrderInWork(implementer); + await RunOrderInWork(implementer, orders); await Task.Run(() => { @@ -115,19 +106,16 @@ namespace ConfectioneryBusinessLogic /// /// /// - private async Task RunOrderInWork(ImplementerViewModel implementer) + private async Task RunOrderInWork(ImplementerViewModel implementer, List allOrders) { - if (_orderLogic == null || implementer == null) + if (_orderLogic == null || implementer == null || allOrders == null || allOrders.Count == 0) { return; } try { - var runOrder = await Task.Run(() => _orderLogic.ReadElement(new OrderSearchModel - { - ImplementerId = implementer.Id, - Statusses = new() { OrderStatus.Выполняется } - })); + // Выбираем из всех заказов тот, который выполняется данным исполнителем + var runOrder = await Task.Run(() => allOrders.FirstOrDefault(x => x.ImplementerId == implementer.Id && x.Status == OrderStatus.Выполняется)); if (runOrder == null) { return;