using PolyclinicBusinessLogic.OfficePackage.HelperEnums; using PolyclinicBusinessLogic.OfficePackage.HelperModels.PDF; namespace PolyclinicBusinessLogic.OfficePackage { public abstract class AbstractSaveToPdfProcedures { public void CreateDoc(PdfProceduresByMedicamentsAndSymptomsInfo 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 { "2cm", "3cm", "3cm", "4cm", "4cm", "4cm" }); CreateRow(new PdfRowParameters { Texts = new List { "Номер", "Период 'с'", "Период 'до'", "Процедура", "Лекарство", "Симптом" }, Style = "NormalTitle", ParagraphAlignment = PdfParagraphAlignmentType.Center }); foreach (var procedure in info.Procedures) { // Добавление строки с основной информацией о процедуре CreateRow(new PdfRowParameters { Texts = new List { procedure.Id.ToString(), procedure.DateStartProcedure.ToShortTimeString(), procedure.DateStopProcedure?.ToShortTimeString() ?? "нет даты окончания процедуры", procedure.ProcedureName, "", "" }, Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Left, }); foreach (var ms in procedure.MedicamentSymptom) { // Добавление строки для каждого лекарства и симптома без дублирования названия процедуры CreateRow(new PdfRowParameters { Texts = new List { "", "", "", "", ms.medicamentName, ms.symptomName }, Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Left, }); } } SavePdf(info); } protected abstract void CreatePdf(PdfProceduresByMedicamentsAndSymptomsInfo info); protected abstract void CreateParagraph(PdfParagraph paragraph); protected abstract void CreateTable(List columns); protected abstract void CreateRow(PdfRowParameters rowParameters); protected abstract void SavePdf(PdfProceduresByMedicamentsAndSymptomsInfo info); } }