2023-04-07 02:20:02 +04:00

60 lines
2.4 KiB
C#

using HotelBusinessLogic.OfficePackage.HelpersEnums;
using HotelBusinessLogic.OfficePackage.HelpersModels;
namespace HotelBusinessLogic.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 = $"From {info.DateFrom.ToShortDateString()} to {info.DateTo.ToShortDateString()}",
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Center
});
CreateTable(new List<string> { "3cm", "3cm", "3cm", "3cm", "3cm", "10cm" });
CreateRow(new PdfRowParameters
{
Texts = new List<string> { "Second Name", "Name", "Last Name", "Settlement", "Eviction", "Cleaning set" },
Style = "NormalTitle",
ParagraphAlignment = PdfParagraphAlignmentType.Center
});
foreach (var model in info.Guest)
{
CreateRow(new PdfRowParameters
{
Texts = new List<string>
{
model.SecondName,
model.Name,
model.LastName,
model.StartDate.ToShortDateString(),
model.EndDate.ToShortDateString(),
model.CleaningInstruments.Values.Select(x => x.Type).ToString()
},
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Left
});
}
CreateParagraph(new PdfParagraph
{
Text = $"Summary: {info.Guest.Count}\t",
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Right
});
SavePdf(info);
}
protected abstract void CreatePdf(PdfInfo info);
protected abstract void CreateParagraph(PdfParagraph paragraph);
protected abstract void CreateTable(List<string> columns);
protected abstract void CreateRow(PdfRowParameters rowParameters);
protected abstract void SavePdf(PdfInfo info);
}