diff --git a/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Worker/WorkerReportLogic.cs b/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Worker/WorkerReportLogic.cs new file mode 100644 index 0000000..dbd0768 --- /dev/null +++ b/HardwareShop/HardwareShopBusinessLogic/BusinessLogics/Worker/WorkerReportLogic.cs @@ -0,0 +1,146 @@ + +using HardwareShopContracts.BindingModels; +using HardwareShopContracts.SearchModels; +using HardwareShopContracts.StoragesContracts; +using HardwareShopContracts.ViewModels; +using HardwareShopDatabaseImplement.Implements.Storekeeper; +using HardwareShopDatabaseImplement.Implements.Worker; +using HardwareShopDatabaseImplement.Models.Storekeeper; +using HardwareShopDatabaseImplement.Models.Worker; +using System.Collections.Generic; +using System.ComponentModel; + +namespace HardwareShopContracts.BusinessLogicsContracts +{ + public class WorkerReportLogic : IWorkerReportLogic + { + private readonly IComponentStorage _componentStorage; + + private readonly BuildStorage _buildStorage; + + private readonly IPurchaseStorage _purchaseStorage; + + private readonly IGoodStorage _goodStorage; + + private readonly ICommentStorage _commentStorage; + + public WorkerReportLogic(IComponentStorage componentStorage, BuildStorage buildStorage, IPurchaseStorage purchaseStorage, IGoodStorage goodStorage, ICommentStorage commentStorage) + { + _componentStorage = componentStorage; + _buildStorage = buildStorage; + _purchaseStorage = purchaseStorage; + _goodStorage = goodStorage; + _commentStorage = commentStorage; + } + + /// + /// Получение списка компонент с указанием, в каких покупках используются + /// + /// + public List GetPurchaseComponent(List purchaseList) + { + var list = new List(); + + foreach (var purchase in purchaseList) + { + var record = new ReportPurchaseComponentViewModel + { + Id = purchase.Id, + Builds = new List<(string Build, int count, List<(string Component, int count)>)>(), + Goods = new List<(string Good, int count, List<(string Component, int count)>)>(), + TotalCount = 0, + TotalCost = 0 + }; + foreach (var good in purchase.PurchaseGoods) + { + List<(string Component, int count)> componentList = new List<(string Component, int count)>(); + int goodTotalCount = 0; + foreach (var component in good.Value.Item1.GoodsComponents) + { + componentList.Add(new(component.Value.Item1.ComponentName, component.Value.Item2)); + goodTotalCount += component.Value.Item2; + } + record.Goods.Add(new(good.Value.Item1.GoodName, good.Value.Item2, componentList)); + record.TotalCount += goodTotalCount * good.Value.Item2; + } + foreach (var build in purchase.PurchaseBuilds) + { + List<(string Component, int count)> componentList = new List<(string Component, int count)>(); + int buildTotalCount = 0; + foreach (var component in build.Value.Item1.BuildComponents) + { + componentList.Add(new(component.Value.Item1.ComponentName, component.Value.Item2)); + buildTotalCount += component.Value.Item2; + } + record.Builds.Add(new(build.Value.Item1.BuildName, build.Value.Item2, componentList)); + record.TotalCount += buildTotalCount * build.Value.Item2; + } + list.Add(record); + } + return list; + } + + /// + /// Получение списка покупок за определенный период + /// + /// + /// + public List GetPurchase(ReportBindingModel model) + { + var list = new List(); + var purchases = _purchaseStorage.GetFilteredList(new PurchaseSearchModel { DateFrom = model.DateFrom, DateTo = model.DateTo }); + + foreach (var purchase in purchases) + { + var record = new ReportPurchaseViewModel + { + Id = purchase.Id, + Builds = new List<(string Build, int count, List, List<(string Component, int count)>)>(), + }; + foreach (var build in purchase.PurchaseBuilds) + { + List commentList = new List(); + foreach (var comment in build.Value.Item1.BuildComments) + { + commentList.Add(new(comment.Value.Text)); + } + List<(string Component, int count)> componentList = new List<(string Component, int count)>(); + foreach (var component in build.Value.Item1.BuildComponents) + { + componentList.Add(new(component.Value.Item1.ComponentName, component.Value.Item2)); + } + record.Builds.Add(new (build.Value.Item1.BuildName, build.Value.Item2, commentList, componentList)); + } + } + return list; + } + + + /// + /// Сохранение компонент с указаеним покупок в файл-Word + /// + /// + public void SaveComponentsToWordFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + + /// + /// Сохранение компонент с указаеним покупок в файл-Excel + /// + /// + public void SaveDishComponentToExcelFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + + /// + /// Сохранение отчёта по покупкам в файл-Pdf + /// + /// + public void SaveOrdersToPdfFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/HardwareShop/HardwareShopBusinessLogic/HardwareShopBusinessLogic.csproj b/HardwareShop/HardwareShopBusinessLogic/HardwareShopBusinessLogic.csproj index c758485..1dbf0ca 100644 --- a/HardwareShop/HardwareShopBusinessLogic/HardwareShopBusinessLogic.csproj +++ b/HardwareShop/HardwareShopBusinessLogic/HardwareShopBusinessLogic.csproj @@ -12,6 +12,7 @@ + diff --git a/HardwareShop/HardwareShopClientApp/Views/Worker/Builds.cshtml b/HardwareShop/HardwareShopClientApp/Views/Worker/Builds.cshtml index defa2cd..5940109 100644 --- a/HardwareShop/HardwareShopClientApp/Views/Worker/Builds.cshtml +++ b/HardwareShop/HardwareShopClientApp/Views/Worker/Builds.cshtml @@ -21,9 +21,6 @@ Название - - Логин пользователя - diff --git a/HardwareShop/HardwareShopClientApp/Views/Worker/Comments.cshtml b/HardwareShop/HardwareShopClientApp/Views/Worker/Comments.cshtml index d2545a5..a7687d0 100644 --- a/HardwareShop/HardwareShopClientApp/Views/Worker/Comments.cshtml +++ b/HardwareShop/HardwareShopClientApp/Views/Worker/Comments.cshtml @@ -23,9 +23,6 @@ Название сборки к которой относиться комментарий - - Логин пользователя - diff --git a/HardwareShop/HardwareShopClientApp/Views/Worker/LinkPurchase.cshtml b/HardwareShop/HardwareShopClientApp/Views/Worker/LinkPurchase.cshtml index 00d7372..74db850 100644 --- a/HardwareShop/HardwareShopClientApp/Views/Worker/LinkPurchase.cshtml +++ b/HardwareShop/HardwareShopClientApp/Views/Worker/LinkPurchase.cshtml @@ -36,9 +36,6 @@ Статус - - Логин пользователя - diff --git a/HardwareShop/HardwareShopClientApp/Views/Worker/Purchase.cshtml b/HardwareShop/HardwareShopClientApp/Views/Worker/Purchase.cshtml index 8bd810d..bb004f4 100644 --- a/HardwareShop/HardwareShopClientApp/Views/Worker/Purchase.cshtml +++ b/HardwareShop/HardwareShopClientApp/Views/Worker/Purchase.cshtml @@ -21,9 +21,6 @@ Цена - - Логин пользователя - Количество @@ -39,7 +36,7 @@ - +