From fa2dcd684f73a568f9af0a981fb23b8064eb90cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9?= Date: Sat, 29 Apr 2023 12:33:37 +0400 Subject: [PATCH] fix --- .../BusinessLogics/WorkModeling.cs | 71 ++++++++----------- .../Implements/OrderStorage.cs | 12 +++- 2 files changed, 41 insertions(+), 42 deletions(-) diff --git a/FoodOrders/FoodOrdersBusinessLogic/BusinessLogics/WorkModeling.cs b/FoodOrders/FoodOrdersBusinessLogic/BusinessLogics/WorkModeling.cs index bcd297f..67d89f0 100644 --- a/FoodOrders/FoodOrdersBusinessLogic/BusinessLogics/WorkModeling.cs +++ b/FoodOrders/FoodOrdersBusinessLogic/BusinessLogics/WorkModeling.cs @@ -32,19 +32,6 @@ namespace FoodOrdersBusinessLogic.BusinessLogics return; } var orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Принят }); - if (orders == null || orders.Count == 0) - { - var waitingOrders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Ожидание }); - if (waitingOrders == null || waitingOrders.Count == 0) - { - var relatedOrders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Выполняется }); - if (relatedOrders == null || relatedOrders.Count == 0) - { - _logger.LogWarning("DoWork. Orders is null or empty"); - return; - } - } - } _logger.LogDebug("DoWork for {Count} orders", orders.Count); foreach (var implementer in implementers) { @@ -161,39 +148,41 @@ namespace FoodOrdersBusinessLogic.BusinessLogics { return; } - try + var listExpectOrder = await Task.Run(() => _orderLogic.ReadList(new OrderSearchModel { - var expectOrder = await Task.Run(() => _orderLogic.ReadElement(new OrderSearchModel + ImplementerId = implementer.Id, + Status = OrderStatus.Ожидание + })); + if (listExpectOrder == null) + { + return; + } + foreach (var order in listExpectOrder) + { + try { - ImplementerId = implementer.Id, - Status = OrderStatus.Ожидание - })); - if (expectOrder == null) - { - return; + _logger.LogDebug("DoWork. Worker {Id} back to order {Order}", implementer.Id, order.Id); + _logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, order.Id); + _orderLogic.FinishOrder(new OrderBindingModel + { + Id = order.Id + }); + // отдыхаем + Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); } - _logger.LogDebug("DoWork. Worker {Id} back to order {Order}", implementer.Id, expectOrder.Id); - // доделываем работу - Thread.Sleep(implementer.WorkExperience * _rnd.Next(100, 300) * expectOrder.Count); - _logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, expectOrder.Id); - _orderLogic.FinishOrder(new OrderBindingModel + // заказа может не быть, просто игнорируем ошибку + catch (InvalidOperationException ex) { - Id = expectOrder.Id - }); - // отдыхаем - Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); - } - // заказа может не быть, просто игнорируем ошибку - catch (InvalidOperationException ex) - { - _logger.LogWarning(ex, "Error try get work"); - } - // а может возникнуть иная ошибка, тогда просто заканчиваем выполнение имитации - catch (Exception ex) - { - _logger.LogError(ex, "Error while do work"); - throw; + _logger.LogWarning(ex, "Error try get work"); + } + // а может возникнуть иная ошибка, тогда просто заканчиваем выполнение имитации + catch (Exception ex) + { + _logger.LogError(ex, "Error while do work"); + throw; + } } + } } } \ No newline at end of file diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Implements/OrderStorage.cs b/FoodOrders/FoodOrdersDatabaseImplement/Implements/OrderStorage.cs index 2fb20b8..54f039a 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Implements/OrderStorage.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Implements/OrderStorage.cs @@ -23,11 +23,21 @@ namespace FoodOrdersDatabaseImplement.Implements public List GetFilteredList(OrderSearchModel model) { - if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.ClientId.HasValue && !model.Status.HasValue) + if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.ClientId.HasValue && !model.Status.HasValue && !model.ImplementerId.HasValue) { return new(); } using var context = new FoodOrdersDatabase(); + if (model.Status.HasValue && model.ImplementerId.HasValue) + { + return context.Orders + .Include(x => x.Dish) + .Include(x => x.Client) + .Include(x => x.Implementer) + .Where(x => x.ImplementerId == model.ImplementerId && x.Status == model.Status) + .Select(x => x.GetViewModel) + .ToList(); + } if (model.ClientId.HasValue) { return context.Orders