From 916c25e2d07dc97c0dd4cae53aa724dbe2cc5079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=BA=20=D0=98=D0=B3=D0=BE=D1=80=D1=8C?= Date: Thu, 25 May 2023 23:49:07 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=87=D0=B5=D1=82=20=D0=BF=D0=B4?= =?UTF-8?q?=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ReportLogic.cs | 15 ++- .../OfficePackage/AbstractSaveToPdf.cs | 68 ++++++++++++ .../OfficePackage/Implements/SaveToPdf.cs | 100 ++++++++++++++++++ .../BusinessLogicsContracts/IReportLogic.cs | 2 +- .../Controllers/ReportController.cs | 23 +++- .../CarServiceWebApp/Files/ReportPdf.pdf | Bin 0 -> 38109 bytes CarService/CarServiceWebApp/Program.cs | 1 + .../Views/Report/ReportPayments.cshtml | 1 + 8 files changed, 203 insertions(+), 7 deletions(-) create mode 100644 CarService/CarServiceBusinessLogic/OfficePackage/AbstractSaveToPdf.cs create mode 100644 CarService/CarServiceBusinessLogic/OfficePackage/Implements/SaveToPdf.cs create mode 100644 CarService/CarServiceWebApp/Files/ReportPdf.pdf diff --git a/CarService/CarServiceBusinessLogic/BusinessLogics/ReportLogic.cs b/CarService/CarServiceBusinessLogic/BusinessLogics/ReportLogic.cs index 046a619..7fae25b 100644 --- a/CarService/CarServiceBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/CarService/CarServiceBusinessLogic/BusinessLogics/ReportLogic.cs @@ -16,14 +16,16 @@ namespace CarServiceBusinessLogic.BusinessLogics private readonly IWorkPaymentStorage _workPaymentStorage; private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToExcel _saveToExcel; + private readonly AbstractSaveToPdf _saveToPdf; - public ReportLogic(ILogger logger, IWorkStorage workStorage, IWorkPaymentStorage workPaymentStorage, AbstractSaveToWord saveToWord, AbstractSaveToExcel saveToExcel) + public ReportLogic(ILogger logger, IWorkStorage workStorage, IWorkPaymentStorage workPaymentStorage, AbstractSaveToWord saveToWord, AbstractSaveToExcel saveToExcel, AbstractSaveToPdf saveToPdf) { _logger = logger; _workStorage = workStorage; _workPaymentStorage = workPaymentStorage; _saveToWord = saveToWord; _saveToExcel = saveToExcel; + _saveToPdf = saveToPdf; } public List GetRequestsByWorks(ReportBindingModel model) { @@ -53,9 +55,16 @@ namespace CarServiceBusinessLogic.BusinessLogics WorksWithRequests = GetRequestsByWorks(model) }); } - public void SaveOrdersToPdfFile(ReportBindingModel model) + public void SavePaymentsToPdfFile(ReportBindingModel model) { - throw new NotImplementedException(); + _saveToPdf.CreateDoc(new PdfInfo + { + FileName = model.FileName, + Title = "Список оплат", + DateFrom = model.DateFrom!.Value, + DateTo = model.DateTo!.Value, + Payments = GetPayments(model) + }); } } } diff --git a/CarService/CarServiceBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/CarService/CarServiceBusinessLogic/OfficePackage/AbstractSaveToPdf.cs new file mode 100644 index 0000000..cf9adc5 --- /dev/null +++ b/CarService/CarServiceBusinessLogic/OfficePackage/AbstractSaveToPdf.cs @@ -0,0 +1,68 @@ +using BlacksmithWorkshopBusinessLogic.OfficePackage.HelperEnums; +using BlacksmithWorkshopBusinessLogic.OfficePackage.HelperModels; + +namespace BlacksmithWorkshopBusinessLogic.OfficePackage +{ + public abstract class AbstractSaveToPdf + { + public void CreateDoc(PdfInfo info) + { + CreatePdf(info); + CreateParagraph(new PdfParagraph + { + Text = info.Title, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + CreateParagraph(new PdfParagraph + { + Text = $"с { info.DateFrom.ToShortDateString() } по { info.DateTo.ToShortDateString() }", Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + CreateTable(new List { "3cm", "2,5cm", "2cm", "2,5cm", "2,5cm", "2,5cm", "3cm" }); + CreateRow(new PdfRowParameters + { + Texts = new List { "Дата оплаты", "Клиент", "Номер заявки", "Работа", "Сумма платежа", "Всего оплачено", "Осталось оплатить" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + foreach (var payment in info.Payments) + { + CreateRow(new PdfRowParameters + { + Texts = new List { payment.PaymentDate.ToShortDateString(), payment.CustomerName, payment.RepairRequestId.ToString(), payment.WorkName, payment.PaymentSum.ToString(), payment.Paid.ToString(), payment.NotPaid.ToString() }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + SavePdf(info); + } + /// + /// Создание doc-файла + /// + /// + protected abstract void CreatePdf(PdfInfo info); + /// + /// Создание параграфа с текстом + /// + /// + /// + protected abstract void CreateParagraph(PdfParagraph paragraph); + /// + /// Создание таблицы + /// + /// + /// + protected abstract void CreateTable(List columns); + /// + /// Создание и заполнение строки + /// + /// + protected abstract void CreateRow(PdfRowParameters rowParameters); + /// + /// Сохранение файла + /// + /// + protected abstract void SavePdf(PdfInfo info); + } +} diff --git a/CarService/CarServiceBusinessLogic/OfficePackage/Implements/SaveToPdf.cs b/CarService/CarServiceBusinessLogic/OfficePackage/Implements/SaveToPdf.cs new file mode 100644 index 0000000..b44f346 --- /dev/null +++ b/CarService/CarServiceBusinessLogic/OfficePackage/Implements/SaveToPdf.cs @@ -0,0 +1,100 @@ +using BlacksmithWorkshopBusinessLogic.OfficePackage.HelperEnums; +using BlacksmithWorkshopBusinessLogic.OfficePackage.HelperModels; +using MigraDoc.DocumentObjectModel; +using MigraDoc.DocumentObjectModel.Tables; +using MigraDoc.Rendering; + +namespace BlacksmithWorkshopBusinessLogic.OfficePackage.Implements +{ + public class SaveToPdf : AbstractSaveToPdf + { + private Document? _document; + private Section? _section; + private Table? _table; + private static ParagraphAlignment GetParagraphAlignment(PdfParagraphAlignmentType type) + { + return type switch + { + PdfParagraphAlignmentType.Center => ParagraphAlignment.Center, + PdfParagraphAlignmentType.Left => ParagraphAlignment.Left, + PdfParagraphAlignmentType.Right => ParagraphAlignment.Right, + _ => ParagraphAlignment.Justify, + }; + } + /// + /// Создание стилей для документа + /// + /// + private static void DefineStyles(Document document) + { + var style = document.Styles["Normal"]; + style.Font.Name = "Times New Roman"; + style.Font.Size = 14; + style = document.Styles.AddStyle("NormalTitle", "Normal"); + style.Font.Bold = true; + } + protected override void CreatePdf(PdfInfo info) + { + _document = new Document(); + DefineStyles(_document); + _section = _document.AddSection(); + } + protected override void CreateParagraph(PdfParagraph pdfParagraph) + { + if (_section == null) + { + return; + } + var paragraph = _section.AddParagraph(pdfParagraph.Text); + paragraph.Format.SpaceAfter = "1cm"; + paragraph.Format.Alignment = + GetParagraphAlignment(pdfParagraph.ParagraphAlignment); + paragraph.Style = pdfParagraph.Style; + } + protected override void CreateTable(List columns) + { + if (_document == null) + { + return; + } + _table = _document.LastSection.AddTable(); + foreach (var elem in columns) + { + _table.AddColumn(elem); + } + } + protected override void CreateRow(PdfRowParameters rowParameters) + { + if (_table == null) + { + return; + } + var row = _table.AddRow(); + for (int i = 0; i < rowParameters.Texts.Count; ++i) + { + row.Cells[i].AddParagraph(rowParameters.Texts[i]); + if (!string.IsNullOrEmpty(rowParameters.Style)) + { + row.Cells[i].Style = rowParameters.Style; + } + Unit borderWidth = 0.5; + row.Cells[i].Borders.Left.Width = borderWidth; + row.Cells[i].Borders.Right.Width = borderWidth; + row.Cells[i].Borders.Top.Width = borderWidth; + row.Cells[i].Borders.Bottom.Width = borderWidth; + row.Cells[i].Format.Alignment = + GetParagraphAlignment(rowParameters.ParagraphAlignment); + row.Cells[i].VerticalAlignment = VerticalAlignment.Center; + } + } + protected override void SavePdf(PdfInfo info) + { + var renderer = new PdfDocumentRenderer(true) + { + Document = _document + }; + renderer.RenderDocument(); + renderer.PdfDocument.Save(info.FileName); + } + } +} \ No newline at end of file diff --git a/CarService/CarServiceContracts/BusinessLogicsContracts/IReportLogic.cs b/CarService/CarServiceContracts/BusinessLogicsContracts/IReportLogic.cs index e974eb8..4bf91e7 100644 --- a/CarService/CarServiceContracts/BusinessLogicsContracts/IReportLogic.cs +++ b/CarService/CarServiceContracts/BusinessLogicsContracts/IReportLogic.cs @@ -30,6 +30,6 @@ namespace CarServiceContracts.BusinessLogicsContracts /// Сохранение заказов в файл-Pdf /// /// - void SaveOrdersToPdfFile(ReportBindingModel model); + void SavePaymentsToPdfFile(ReportBindingModel model); } } diff --git a/CarService/CarServiceWebApp/Controllers/ReportController.cs b/CarService/CarServiceWebApp/Controllers/ReportController.cs index ddf57ec..57b9d2f 100644 --- a/CarService/CarServiceWebApp/Controllers/ReportController.cs +++ b/CarService/CarServiceWebApp/Controllers/ReportController.cs @@ -11,8 +11,10 @@ namespace CarServiceWebApp.Controllers private readonly IReportLogic _reportLogic; private readonly IWorkLogic _workLogic; private static List SelectedWorks = new(); - private static ReportBindingModel PaymentsModel = new(); - + private static ReportBindingModel PaymentsModel = new() + { + FileName = "C:\\Users\\igors\\source\\repos\\ISEbd-21_Melnikov_I.O._CarService\\CarService\\CarServiceWebApp\\Files\\ReportPdf.pdf" + }; public ReportController(IReportLogic reportLogic, IWorkLogic workLogic) { @@ -67,7 +69,8 @@ namespace CarServiceWebApp.Controllers [HttpPost] public IActionResult DateSelection(DateTime dateFrom, DateTime dateTo) { - PaymentsModel = new() { DateFrom = dateFrom, DateTo = dateTo }; + PaymentsModel.DateFrom = dateFrom; + PaymentsModel.DateTo = dateTo; return Redirect("~/Report/ReportPayments"); } public IActionResult ReportPayments() @@ -102,6 +105,20 @@ namespace CarServiceWebApp.Controllers byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); + return File(fileBytes, "application/force-download", fileName); + } + public IActionResult SaveToPdf() + { + _reportLogic.SavePaymentsToPdfFile(PaymentsModel); + return Redirect("~/Report/DownLoadPdf"); + } + public IActionResult DownLoadPdf() + { + string filePath = "C:\\Users\\igors\\source\\repos\\ISEbd-21_Melnikov_I.O._CarService\\CarService\\CarServiceWebApp\\Files\\ReportPdf.pdf"; + string fileName = "Отчет.pdf"; + + byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); + return File(fileBytes, "application/force-download", fileName); } } diff --git a/CarService/CarServiceWebApp/Files/ReportPdf.pdf b/CarService/CarServiceWebApp/Files/ReportPdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5e0ce0bedcc07262030b82aa126a975f9a69e2bb GIT binary patch literal 38109 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 builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); var app = builder.Build(); diff --git a/CarService/CarServiceWebApp/Views/Report/ReportPayments.cshtml b/CarService/CarServiceWebApp/Views/Report/ReportPayments.cshtml index 12e1022..c718a4f 100644 --- a/CarService/CarServiceWebApp/Views/Report/ReportPayments.cshtml +++ b/CarService/CarServiceWebApp/Views/Report/ReportPayments.cshtml @@ -57,4 +57,5 @@ {

Нет оплат за указанный период

} +
\ No newline at end of file