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 }); CreateTable(new List { "2cm", "6cm", "4cm", "6cm"}); CreateRow(new PdfRowParameters { Text = new List { "Номер", "Товар", "Цена", "Статья затрат" }, Style = "NormalTittle", alignmentType = PdfParagraphAlignmentType.Center, }); foreach (var products in info.Products) { CreateRow(new PdfRowParameters { Text = new List { products.ID.ToString(), products.ProductName.ToString(), products.Price.ToString(), products.CostItemName.ToString()}, Style = "Normal", alignmentType = PdfParagraphAlignmentType.Left, }); } CreateParagraph(new PdfParagraph { Text = $"Итого: {info.Products.Sum(x => x.Price)}\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); } }