1 задание

This commit is contained in:
Данияр Аглиуллов 2023-03-06 19:36:42 +04:00
parent 09fabc904e
commit e017eb7709
4 changed files with 21 additions and 17 deletions

View File

@ -41,9 +41,9 @@ namespace ConfectioneryBusinessLogic.BusinessLogics
return true; return true;
} }
public bool TakeOrderInWork(OrderBindingModel model) => SetOrderStatus(model, OrderStatus.Выполняется); public OrderStatus? TakeOrderInWork(OrderBindingModel model) => SetOrderStatus(model, OrderStatus.Выполняется);
public bool DeliveryOrder(OrderBindingModel model) => SetOrderStatus(model, OrderStatus.Выдан); public OrderStatus? DeliveryOrder(OrderBindingModel model) => SetOrderStatus(model, OrderStatus.Выдан);
public bool FinishOrder(OrderBindingModel model) public OrderStatus? FinishOrder(OrderBindingModel model)
{ {
model.DateImplement = DateTime.Now; model.DateImplement = DateTime.Now;
return SetOrderStatus(model, OrderStatus.Готов); return SetOrderStatus(model, OrderStatus.Готов);
@ -84,7 +84,7 @@ namespace ConfectioneryBusinessLogic.BusinessLogics
return true; return true;
} }
private bool SetOrderStatus(OrderBindingModel model, OrderStatus orderStatus) private OrderStatus? SetOrderStatus(OrderBindingModel model, OrderStatus orderStatus)
{ {
// Находим статус заказа по его айди // Находим статус заказа по его айди
var vmodel = _orderStorage.GetElement(new() { Id = model.Id }); var vmodel = _orderStorage.GetElement(new() { Id = model.Id });
@ -125,9 +125,9 @@ namespace ConfectioneryBusinessLogic.BusinessLogics
if (_orderStorage.Update(model) == null) if (_orderStorage.Update(model) == null)
{ {
_logger.LogWarning("Update operation failed"); _logger.LogWarning("Update operation failed");
return false; return null;
} }
return true; return orderStatus;
} }
public OrderViewModel? ReadElement(OrderSearchModel model) public OrderViewModel? ReadElement(OrderSearchModel model)

View File

@ -72,8 +72,12 @@ namespace ConfectioneryBusinessLogic
} }
await RunOrderInWork(implementer); await RunOrderInWork(implementer);
await Task.Run(() => await Task.Run(() => RunWorkToOrders(implementer, orders));
{
}
private void RunWorkToOrders(ImplementerViewModel implementer, List<OrderViewModel> orders)
{
foreach (var order in orders) foreach (var order in orders)
{ {
try try
@ -107,8 +111,7 @@ namespace ConfectioneryBusinessLogic
// отдыхаем // отдыхаем
Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100));
} }
}); }
}
/// <summary> /// <summary>
/// Ищем заказ, которые уже в работе (вдруг исполнителя прервали) /// Ищем заказ, которые уже в работе (вдруг исполнителя прервали)

View File

@ -87,8 +87,8 @@ namespace ConfectioneryView
_logger.LogInformation("Заказ No{id}. Меняется статус на 'В работе'", id); _logger.LogInformation("Заказ No{id}. Меняется статус на 'В работе'", id);
try try
{ {
var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel { Id = id }); var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel { Id = id }) ;
if (!operationResult) if (operationResult == null)
{ {
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
} }
@ -116,7 +116,7 @@ namespace ConfectioneryView
Id = id, Id = id,
Status = orderStatus Status = orderStatus
}); });
if (!operationResult) if (operationResult == null)
{ {
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
} }
@ -141,7 +141,7 @@ namespace ConfectioneryView
var operationResult = _orderLogic.DeliveryOrder(new var operationResult = _orderLogic.DeliveryOrder(new
OrderBindingModel OrderBindingModel
{ Id = id }); { Id = id });
if (!operationResult) if (operationResult == null)
{ {
throw new Exception("Ошибка при сохранении.Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении.Дополнительная информация в логах.");
} }

View File

@ -1,6 +1,7 @@
using ConfectioneryContracts.BindingModels; using ConfectioneryContracts.BindingModels;
using ConfectioneryContracts.SearchModels; using ConfectioneryContracts.SearchModels;
using ConfectioneryContracts.ViewModels; using ConfectioneryContracts.ViewModels;
using ConfectioneryDataModels.Enums;
namespace ConfectioneryContracts.BusinessLogicsContracts namespace ConfectioneryContracts.BusinessLogicsContracts
{ {
@ -9,8 +10,8 @@ namespace ConfectioneryContracts.BusinessLogicsContracts
List<OrderViewModel>? ReadList(OrderSearchModel? model); List<OrderViewModel>? ReadList(OrderSearchModel? model);
OrderViewModel? ReadElement(OrderSearchModel model); OrderViewModel? ReadElement(OrderSearchModel model);
bool CreateOrder(OrderBindingModel model); bool CreateOrder(OrderBindingModel model);
bool TakeOrderInWork(OrderBindingModel model); OrderStatus? TakeOrderInWork(OrderBindingModel model);
bool FinishOrder(OrderBindingModel model); OrderStatus? FinishOrder(OrderBindingModel model);
bool DeliveryOrder(OrderBindingModel model); OrderStatus? DeliveryOrder(OrderBindingModel model);
} }
} }