From b81bb26b41ab2b71601c2e418f1b44027ca47497 Mon Sep 17 00:00:00 2001 From: Oleg Shabunov Date: Wed, 10 Apr 2024 23:59:33 +0400 Subject: [PATCH] shop repair overflow fix --- AutoWorkshopBusinessLogic/BusinessLogics/ShopLogic.cs | 10 ++++++++-- AutoWorkshopFileImplement/Implements/ShopStorage.cs | 8 +++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/AutoWorkshopBusinessLogic/BusinessLogics/ShopLogic.cs b/AutoWorkshopBusinessLogic/BusinessLogics/ShopLogic.cs index d592f77..b15cce5 100644 --- a/AutoWorkshopBusinessLogic/BusinessLogics/ShopLogic.cs +++ b/AutoWorkshopBusinessLogic/BusinessLogics/ShopLogic.cs @@ -110,6 +110,13 @@ namespace AutoWorkshopBusinessLogic.BusinessLogics if (Shop == null) throw new ArgumentException("Магазина не существует"); + int CurrentRepairsNum = Shop.ShopRepairs.Select(x => x.Value.Item2).Sum(); + if (Model.Count > Shop.RepairsMaxCount - CurrentRepairsNum) + { + _logger.LogWarning("Попытка добавить в магазин число элементов, большее RepairsMaxCount"); + return false; + } + if (Shop.ShopRepairs.ContainsKey(Model.RepairId)) { var RepairsNum = Shop.ShopRepairs[Model.RepairId]; @@ -173,8 +180,7 @@ namespace AutoWorkshopBusinessLogic.BusinessLogics if (!Model.RepairId.HasValue || !Model.Count.HasValue) return false; - _logger.LogInformation("Проверка ремонтов во всех магазинах"); - + _logger.LogInformation("Поиск ремонтов во всех магазинах"); if (_shopStorage.Sell(Model)) { _logger.LogInformation("Продажа выполнена успешно"); diff --git a/AutoWorkshopFileImplement/Implements/ShopStorage.cs b/AutoWorkshopFileImplement/Implements/ShopStorage.cs index 7873b4c..7c4d816 100644 --- a/AutoWorkshopFileImplement/Implements/ShopStorage.cs +++ b/AutoWorkshopFileImplement/Implements/ShopStorage.cs @@ -87,15 +87,17 @@ namespace AutoWorkshopFileImplement.Implements if (Model == null || !Model.RepairId.HasValue || !Model.Count.HasValue) return false; - int RemainingSpace = _source.Shops.Select(x => x.Repairs.ContainsKey(Model.RepairId.Value) ? x.Repairs[Model.RepairId.Value] : 0).Sum(); + int RemainingSpace = _source.Shops + .Select(x => x.Repairs.ContainsKey(Model.RepairId.Value) ? x.Repairs[Model.RepairId.Value] : 0) + .Sum(); if (RemainingSpace < Model.Count) return false; - var Shops = _source.Shops + var ShopsWithDesiredRepair = _source.Shops .Where(x => x.Repairs.ContainsKey(Model.RepairId.Value)) .OrderByDescending(x => x.Repairs[Model.RepairId.Value]).ToList(); - foreach (var Shop in Shops) + foreach (var Shop in ShopsWithDesiredRepair) { int Slack = Model.Count.Value - Shop.Repairs[Model.RepairId.Value];