using ElectronicsShopBusinessLogic.OfficePackage.HelperEnums; using ElectronicsShopBusinessLogic.OfficePackage.HelperModels; using MigraDoc.DocumentObjectModel; using PdfSharp.Pdf; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ElectronicsShopBusinessLogic.OfficePackage { public abstract class AbstractSaveToPdfClient { public PdfDocument CreteDoc (PdfInfoClient info) { CretePdf(info); CreateParagraph(new PdfParagraph { Text = info.Title, Style = "NormalTitle", alignmentType = PdfParagraphAlignmentType.Center, }); CreateParagraph(new PdfParagraph { Text = $"C {info.DateFrom.ToShortDateString()} по {info.DateTo.ToShortDateString()}", Style = "Normal", alignmentType = PdfParagraphAlignmentType.Right }); List PaymentsID = new List(); foreach (var pr in info.Products) { int id = pr.PaymentID; if (PaymentsID.Contains(id) == false) { PaymentsID.Add(id); } } foreach (int id in PaymentsID) { CreateParagraph(new PdfParagraph { Text = $"Номер оплаты: {id}", Style = "Normal", alignmentType = PdfParagraphAlignmentType.Left, }); CreateTable(new List { "2cm", "4cm", "2cm", "4cm", "4cm" }); CreateRow(new PdfRowParameters { Text = new List { "Номер товара", "Товар", "Цена", "Количество", "Статья затрат" }, Style = "NormalTittle", alignmentType = PdfParagraphAlignmentType.Center, }); double sum = 0; foreach (var products in info.Products) { if (products.PaymentID == id) { sum += products.Price * products.count; CreateRow(new PdfRowParameters { Text = new List { products.ID.ToString(), products.ProductName.ToString(), (products.Price * products.count).ToString(), products.count.ToString() ,products.CostItemName.ToString()}, Style = "Normal", alignmentType = PdfParagraphAlignmentType.Left, }); } } CreateParagraph(new PdfParagraph { Text = $"Итого: {sum}\t", Style = "Normal", alignmentType = PdfParagraphAlignmentType.Right }); } var document = SavePdf(info); return document; } // Создание doc-файла protected abstract void CretePdf (PdfInfoClient info); // Создание параграфа с текстом protected abstract void CreateParagraph(PdfParagraph paragraph); // Создание таблицы protected abstract void CreateTable(List columns); // Создание и заполнение строки protected abstract void CreateRow(PdfRowParameters rowParameters); // Сохранение файла protected abstract PdfDocument SavePdf(PdfInfoClient info); } }