diff --git a/ConfectionaryBusinessLogic/OrderLogic.cs b/ConfectionaryBusinessLogic/OrderLogic.cs index 91d1e44..a345091 100644 --- a/ConfectionaryBusinessLogic/OrderLogic.cs +++ b/ConfectionaryBusinessLogic/OrderLogic.cs @@ -92,20 +92,25 @@ namespace ConfectioneryBusinessLogic.BusinessLogics { throw new ArgumentNullException(nameof(model)); } - if ((int)vmodel.Status + 1 != (int)orderStatus) + if ((int)vmodel.Status + 1 != (int)orderStatus || vmodel.Status == OrderStatus.Ожидается && orderStatus == OrderStatus.Готов) { throw new InvalidOperationException($"Попытка перевести заказ не в следующий статус: " + $"Текущий статус: {vmodel.Status} \n" + $"Планируемый статус: {orderStatus} \n" + $"Доступный статус: {(OrderStatus)((int)vmodel.Status + 1)}"); } - if (orderStatus == OrderStatus.Готов) + if (orderStatus == OrderStatus.Готов && orderStatus == OrderStatus.Ожидается) { var vpastry = _pastryStorage.GetElement(new() { Id = vmodel.PastryId }); if (vpastry == null || !_shopLogic.AddPastriesInShops(vpastry, vmodel.Count)) { - throw new Exception($"Не удалось заполнить магазины изделием '{vpastry?.PastryName ?? string.Empty}' из заказа {vmodel.Id}"); + _logger.LogWarning($"Не удалось заполнить магазины изделием '{vpastry?.PastryName ?? string.Empty}' из заказа {vmodel.Id}"); + orderStatus = OrderStatus.Ожидается; + } + else + { + orderStatus = OrderStatus.Готов; } } model.Status = orderStatus; diff --git a/ConfectioneryDataModels/OrderStatus.cs b/ConfectioneryDataModels/OrderStatus.cs index bb0ce5a..9ee8470 100644 --- a/ConfectioneryDataModels/OrderStatus.cs +++ b/ConfectioneryDataModels/OrderStatus.cs @@ -6,6 +6,7 @@ Принят = 0, Выполняется = 1, Готов = 2, - Выдан = 3 + Выдан = 3, + Ожидается = 4, } } \ No newline at end of file