CourseWorkElectronicsShop/ElectronicsShop/ElectronicsShopBusinessLogic/OfficePackage/AbstractSaveToPdfClient.cs
Илья Федотов 2cc2797387 Pdf report fix
2024-07-27 14:58:51 +04:00

85 lines
3.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<int> PaymentsID = new List<int>();
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<string> { "2cm", "4cm", "2cm", "2cm", "4cm" });
CreateRow(new PdfRowParameters {
Text = new List<string> { "Номер товара", "Товар", "Цена", "Количество", "Статья затрат" },
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<string> { 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<string> columns);
// Создание и заполнение строки
protected abstract void CreateRow(PdfRowParameters rowParameters);
// Сохранение файла
protected abstract PdfDocument SavePdf(PdfInfoClient info);
}
}