чепуха какая-то но пусть пока будет так

This commit is contained in:
dasha 2023-04-04 01:23:14 +04:00
parent 1c67a1004f
commit ce1fd40875

View File

@ -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<ReportBuildGoodViewModel> GetBuildGood(List<GoodViewModel> goods)
{
{
var list = new List<ReportBuildGoodViewModel>();
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<ReportComponentsViewModel> GetComponents(ReportBindingModel model)
{
var list = new List<ReportComponentsViewModel>();
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;
}