fix
This commit is contained in:
parent
f4bc73c0b6
commit
fa2dcd684f
@ -32,19 +32,6 @@ namespace FoodOrdersBusinessLogic.BusinessLogics
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Принят });
|
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);
|
_logger.LogDebug("DoWork for {Count} orders", orders.Count);
|
||||||
foreach (var implementer in implementers)
|
foreach (var implementer in implementers)
|
||||||
{
|
{
|
||||||
@ -161,39 +148,41 @@ namespace FoodOrdersBusinessLogic.BusinessLogics
|
|||||||
{
|
{
|
||||||
return;
|
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,
|
_logger.LogDebug("DoWork. Worker {Id} back to order {Order}", implementer.Id, order.Id);
|
||||||
Status = OrderStatus.Ожидание
|
_logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, order.Id);
|
||||||
}));
|
_orderLogic.FinishOrder(new OrderBindingModel
|
||||||
if (expectOrder == null)
|
{
|
||||||
{
|
Id = order.Id
|
||||||
return;
|
});
|
||||||
|
// отдыхаем
|
||||||
|
Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100));
|
||||||
}
|
}
|
||||||
_logger.LogDebug("DoWork. Worker {Id} back to order {Order}", implementer.Id, expectOrder.Id);
|
// заказа может не быть, просто игнорируем ошибку
|
||||||
// доделываем работу
|
catch (InvalidOperationException ex)
|
||||||
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
|
|
||||||
{
|
{
|
||||||
Id = expectOrder.Id
|
_logger.LogWarning(ex, "Error try get work");
|
||||||
});
|
}
|
||||||
// отдыхаем
|
// а может возникнуть иная ошибка, тогда просто заканчиваем выполнение имитации
|
||||||
Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100));
|
catch (Exception ex)
|
||||||
}
|
{
|
||||||
// заказа может не быть, просто игнорируем ошибку
|
_logger.LogError(ex, "Error while do work");
|
||||||
catch (InvalidOperationException ex)
|
throw;
|
||||||
{
|
}
|
||||||
_logger.LogWarning(ex, "Error try get work");
|
|
||||||
}
|
|
||||||
// а может возникнуть иная ошибка, тогда просто заканчиваем выполнение имитации
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError(ex, "Error while do work");
|
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,11 +23,21 @@ namespace FoodOrdersDatabaseImplement.Implements
|
|||||||
|
|
||||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
public List<OrderViewModel> 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();
|
return new();
|
||||||
}
|
}
|
||||||
using var context = new FoodOrdersDatabase();
|
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)
|
if (model.ClientId.HasValue)
|
||||||
{
|
{
|
||||||
return context.Orders
|
return context.Orders
|
||||||
|
Loading…
x
Reference in New Issue
Block a user