diff --git a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/BusinessLogics/ReportLogic.cs b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/BusinessLogics/ReportLogic.cs index a55eac5..cdd5b13 100644 --- a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/BusinessLogics/ReportLogic.cs @@ -1,4 +1,5 @@ -using FurnitureAssembly_WorkerContracts.BindingModels; +using FurnitureAssembly_WorkerBusinessLogic.OfficePackage.HelperModels; +using FurnitureAssembly_WorkerContracts.BindingModels; using FurnitureAssembly_WorkerContracts.BusinessLogicContracts; using FurnitureAssembly_WorkerContracts.SearchModels; using FurnitureAssembly_WorkerContracts.StorageContracts; @@ -67,16 +68,40 @@ namespace FurnitureAssembly_WorkerBusinessLogic.BusinessLogics /// public List GetOrders(ReportBindingModel model) { - return _orderStorage.GetFilteredList(new OrderSearchModel { DateFrom = model.DateFrom, DateTo = model.DateTo }) - .Select(x => new ReportOrdersViewModel - { - Id = x.Id, - DateCreate = x.DateCreate, - SetName = x.SetName, - Sum = x.Sum, + var orders = _orderStorage + .GetFilteredList(new OrderSearchModel { DateFrom = model.DateFrom, DateTo = model.DateTo }); + var sets = _setStorage.GetFullList(); + var furnitureModules = _furnitureModuleStorage.GetFullList(); + var list = new List(); - }) - .ToList(); + foreach (var order in orders) + { + var record = new ReportOrdersViewModel + { + Id = order.Id, + SetName = order.SetName, + DateCreate = order.DateCreate, + FurnitureModules = new List<(string, double)>(), + TotalCount = 0 + }; + foreach (var set in sets) + { + if (set.Id == order.SetId) + { + foreach (var furnitureModule in furnitureModules) + { + if (set.SetFurnitureModules.ContainsKey(furnitureModule.Id)) + { + record.FurnitureModules.Add(new(furnitureModule.Name, furnitureModule.Cost)); + record.TotalCount += set.SetFurnitureModules[furnitureModule.Id].Item2; + } + } + } + } + list.Add(record); + } + + return list; } /// /// Сохранение компонент в файл-Word diff --git a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/AbstractSaveToPdf.cs index d5e4e5d..fe2e71c 100644 --- a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/AbstractSaveToPdf.cs +++ b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/AbstractSaveToPdf.cs @@ -35,45 +35,29 @@ namespace FurnitureAssembly_WorkerBusinessLogic.OfficePackage Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Left }); - CreateTable(new List { "2cm", "3cm", "6cm", "3cm", "3cm" }); + CreateTable(new List { "2cm", "3cm", "3cm", "3cm" }); CreateRow(new PdfRowParameters { Texts = new List { "Номер", "Дата заказа", "Мебельный модуль", "Сумма" }, Style = "NormalTitle", ParagraphAlignment = PdfParagraphAlignmentType.Center }); - foreach (var furnitureModule in order.) + foreach (var furnitureModule in order.FurnitureModules) { CreateRow(new PdfRowParameters { - Texts = new List { order.Id.ToString(), order.DateCreate.ToShortDateString(), order.SetName, order.Sum.ToString() }, + Texts = new List { order.Id.ToString(), order.DateCreate.ToShortDateString(), furnitureModule.Name, furnitureModule.Cost.ToString() }, Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Left }); } - } - CreateTable(new List { "2cm", "3cm", "6cm", "3cm", "3cm" }); - CreateRow(new PdfRowParameters - { - Texts = new List { "Номер", "Дата заказа", "Изделие", "Сумма" }, - Style = "NormalTitle", - ParagraphAlignment = PdfParagraphAlignmentType.Center - }); - foreach (var order in info.Orders) - { - CreateRow(new PdfRowParameters + CreateParagraph(new PdfParagraph { - Texts = new List { order.Id.ToString(), order.DateCreate.ToShortDateString(), order.SetName, order.Sum.ToString() }, + Text = $"Итого: {info.Orders.Sum(x => x.Sum)}\t", Style = "Normal", - ParagraphAlignment = PdfParagraphAlignmentType.Left + ParagraphAlignment = PdfParagraphAlignmentType.Rigth }); } - CreateParagraph(new PdfParagraph - { - Text = $"Итого: {info.Orders.Sum(x => x.Sum)}\t", - Style = "Normal", - ParagraphAlignment = PdfParagraphAlignmentType.Rigth - }); SavePdf(info); } /// diff --git a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/Implements/SaveToPdf.cs b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/Implements/SaveToPdf.cs index a202213..32b881c 100644 --- a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/Implements/SaveToPdf.cs +++ b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerBusinessLogic/OfficePackage/Implements/SaveToPdf.cs @@ -2,6 +2,7 @@ using FurnitureAssembly_WorkerBusinessLogic.OfficePackage.HelperModels; using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; +using MigraDoc.DocumentObjectModel.Tables; using System; using System.Collections.Generic; using System.Linq; diff --git a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerContracts/ViewModels/ReportOrdersViewModel.cs b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerContracts/ViewModels/ReportOrdersViewModel.cs index 6645d64..a31a170 100644 --- a/FurnitureAssembly_Worker/FurnitureAssembly_WorkerContracts/ViewModels/ReportOrdersViewModel.cs +++ b/FurnitureAssembly_Worker/FurnitureAssembly_WorkerContracts/ViewModels/ReportOrdersViewModel.cs @@ -1,4 +1,5 @@ -using System; +using FurnitureAssembly_WorkerDataModels.Models; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -11,7 +12,8 @@ namespace FurnitureAssembly_WorkerContracts.ViewModels public int Id { get; set; } public DateTime DateCreate { get; set; } public string SetName { get; set; } = string.Empty; - public List<(string FurnitureModule, int Count)> FurnitureModules { get; set; } = new(); + public List<(string Name, double Cost)> FurnitureModules { get; set; } = new(); + public int TotalCount { get; set; } public double Sum { get; set; } } }