From ce1fd4087540720f4088c8983c9119a2ef121bf9 Mon Sep 17 00:00:00 2001 From: dasha Date: Tue, 4 Apr 2023 01:23:14 +0400 Subject: [PATCH] =?UTF-8?q?=D1=87=D0=B5=D0=BF=D1=83=D1=85=D0=B0=20=D0=BA?= =?UTF-8?q?=D0=B0=D0=BA=D0=B0=D1=8F-=D1=82=D0=BE=20=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D1=82=D1=8C=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B1?= =?UTF-8?q?=D1=83=D0=B4=D0=B5=D1=82=20=D1=82=D0=B0=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Storekeeper/ReportStorekeeperLogic.cs | 66 ++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Storekeeper/ReportStorekeeperLogic.cs b/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Storekeeper/ReportStorekeeperLogic.cs index 23ee404..6bcd546 100644 --- a/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Storekeeper/ReportStorekeeperLogic.cs +++ b/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Storekeeper/ReportStorekeeperLogic.cs @@ -3,6 +3,8 @@ using HardwareShopContracts.BusinessLogicsContracts; using HardwareShopContracts.SearchModels; using HardwareShopContracts.StoragesContracts; using HardwareShopContracts.ViewModels; +using HardwareShopDatabaseImplement.Models.Worker; +using HardwareShopDataModels.Models; using System.Collections.Generic; namespace HardwareShopBusinessLogic.BusinessLogics.Storekeeper @@ -12,16 +14,19 @@ namespace HardwareShopBusinessLogic.BusinessLogics.Storekeeper private readonly IComponentStorage _componentStorage; private readonly IGoodStorage _goodStorage; private readonly IPurchaseStorage _purchaseStorage; + private readonly IBuildStorage _buildStorage; - public ReportStorekeeperLogic(IComponentStorage componentStorage, IGoodStorage goodStorage, IPurchaseStorage purchaseStorage) + public ReportStorekeeperLogic(IComponentStorage componentStorage, IGoodStorage goodStorage, IPurchaseStorage purchaseStorage, IBuildStorage buildStorage) { _componentStorage = componentStorage; _goodStorage = goodStorage; _purchaseStorage = purchaseStorage; + _buildStorage = buildStorage; } public List GetBuildGood(List goods) - { + { var list = new List(); + var builds = _buildStorage.GetFullList(); foreach (var good in goods) { @@ -30,6 +35,15 @@ namespace HardwareShopBusinessLogic.BusinessLogics.Storekeeper GoodName = good.GoodName, Builds = new() }; + var components = good.GoodsComponents; + foreach (var build in builds) + { + // сработает ли такая проверка? + if (build.BuildComponents == good.GoodsComponents) + { + builds.Add(build); + } + } } return list; } @@ -37,6 +51,54 @@ namespace HardwareShopBusinessLogic.BusinessLogics.Storekeeper public List GetComponents(ReportBindingModel model) { var list = new List(); + var purchases = _purchaseStorage + .GetFilteredList(new PurchaseSearchModel + { + DateFrom = model.DateFrom, + DateTo = model.DateTo + }); + var components = _componentStorage.GetFullList(); + foreach (var component in components) + { + var record = new ReportComponentsViewModel + { + ComponentName = component.ComponentName, + TotalCount = 0, + GoodOrBuilds = new List<(string GoodOrBuild, int Count)>() + }; + + foreach (var purchase in purchases) + { + int sum = 0; + foreach (var build in purchase.PurchaseBuilds) + { + int countBuildsInPurchase = build.Value.Item2; + if (build.Value.Item1.BuildComponents.ContainsKey(component.Id)) + { + int countComponentsInBuild = build.Value.Item1 + .BuildComponents.First(x => x.Key == component.Id) + .Value.Item2; + sum += countComponentsInBuild * countBuildsInPurchase; + + record.GoodOrBuilds.Add((build.Value.Item1.BuildName, countComponentsInBuild)); + } + } + foreach (var good in purchase.PurchaseGoods) + { + int countGoodsInPurchase = good.Value.Item2; + if (good.Value.Item1.GoodsComponents.ContainsKey(component.Id)) + { + int countComponentsInGood = good.Value.Item1 + .GoodsComponents.First(x => x.Key == component.Id) + .Value.Item2; + sum += countComponentsInGood * countGoodsInPurchase; + + record.GoodOrBuilds.Add((good.Value.Item1.GoodName, countComponentsInGood)); + } + } + record.TotalCount = sum; + } + } return list; }