2024-03-25 00:53:24 +04:00
using AircraftPlantBusinessLogic.OfficePackage.HelperEnums ;
using AircraftPlantBusinessLogic.OfficePackage.HelperModels ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
namespace AircraftPlantBusinessLogic.OfficePackage
{
/// <summary>
/// Абстрактный класс для сохранения Word-файла
/// </summary>
public abstract class AbstractSaveToPdf
{
/// <summary>
/// Создание отчета в Pdf-формате
/// </summary>
/// <param name="info"></param>
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 < string > { "2cm" , "3cm" , "6cm" , "3cm" , "3cm" } ) ;
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { "Номер" , "Дата заказа" , "Изделие" , "Статус" , "Сумма" } ,
Style = "NormalTitle" ,
ParagraphAlignment = PdfParagraphAlignmentType . Center
} ) ;
foreach ( var order in info . Orders )
{
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { order . Id . ToString ( ) , order . DateCreate . ToShortDateString ( ) , order . PlaneName , order . Status . ToString ( ) , order . Sum . ToString ( ) } ,
Style = "Normal" ,
ParagraphAlignment = PdfParagraphAlignmentType . Left
} ) ;
}
CreateParagraph ( new PdfParagraph { Text = $"Итого: {info.Orders.Sum(x => x.Sum)}\t" , Style = "Normal" , ParagraphAlignment = PdfParagraphAlignmentType . Right } ) ;
SavePdf ( info ) ;
}
/// <summary>
2024-04-08 00:02:59 +04:00
/// Создание отчета в Pdf-формате
/// по закзам с группировкой по датам
/// </summary>
/// <param name="info"></param>
public void CreateGroupOrdersDoc ( PdfInfo info )
{
CreatePdf ( info ) ;
CreateParagraph ( new PdfParagraph { Text = info . Title , Style = "NormalTitle" , ParagraphAlignment = PdfParagraphAlignmentType . Center } ) ;
CreateTable ( new List < string > { "4cm" , "3cm" , "2cm" } ) ;
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { "Дата заказа" , "Количество" , "Сумма" } ,
Style = "NormalTitle" ,
ParagraphAlignment = PdfParagraphAlignmentType . Center
} ) ;
foreach ( var order in info . GroupOrders )
{
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { order . DateCreate . ToShortDateString ( ) , order . Count . ToString ( ) , order . Sum . ToString ( ) } ,
Style = "Normal" ,
ParagraphAlignment = PdfParagraphAlignmentType . Left
} ) ;
}
CreateParagraph ( new PdfParagraph { Text = $"Итого: {info.GroupOrders.Sum(x => x.Sum)}\t" , Style = "Normal" , ParagraphAlignment = PdfParagraphAlignmentType . Right } ) ;
SavePdf ( info ) ;
}
/// <summary>
2024-03-25 00:53:24 +04:00
/// Создание pdf-файла
/// </summary>
/// <param name="info"></param>
protected abstract void CreatePdf ( PdfInfo info ) ;
/// <summary>
/// Создание абзаца с текстом
/// </summary>
/// <param name="paragraph"></param>
protected abstract void CreateParagraph ( PdfParagraph paragraph ) ;
/// <summary>
/// Создание таблицы
/// </summary>
/// <param name="columns"></param>
protected abstract void CreateTable ( List < string > columns ) ;
/// <summary>
/// Создание и заполнение строки
/// </summary>
/// <param name="rowParameters"></param>
protected abstract void CreateRow ( PdfRowParameters rowParameters ) ;
/// <summary>
/// Сохранение файла
/// </summary>
/// <param name="info"></param>
protected abstract void SavePdf ( PdfInfo info ) ;
}
}