2023-05-19 23:50:03 +04:00
using BankBusinessLogic.OfficePackage.HelperEnums ;
using BankBusinessLogic.OfficePackage.HelperModels ;
2023-05-19 19:00:15 +04:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
2023-05-19 23:50:03 +04:00
namespace BankBusinessLogic.OfficePackage
2023-05-19 19:00:15 +04:00
{
public abstract class AbstractSaveToPdf
{
2023-05-19 22:30:05 +04:00
public MemoryStream CreateOperatorDoc ( PdfInfo info )
2023-05-19 19:00:15 +04:00
{
2023-05-20 02:48:45 +04:00
if ( info . Transfers = = null )
{
throw new ArgumentNullException ( "Данные для отчёта отсутсвуют!" , nameof ( info . Transfers ) ) ;
}
2023-05-19 19:00:15 +04:00
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 } ) ;
2023-05-19 22:30:05 +04:00
CreateTable ( new List < string > { "4cm" , "3cm" , "3cm" , "2cm" , "3cm" , "3cm" } ) ;
2023-05-19 19:00:15 +04:00
CreateRow ( new PdfRowParameters
{
2023-05-19 22:30:05 +04:00
Texts = new List < string > { "Номер зачисления" , "Дата зачисления" , "Номер закупки" , "Сумма" , "Валюта" , "Дата закупки" } ,
2023-05-19 19:00:15 +04:00
Style = "NormalTitle" ,
ParagraphAlignment = PdfParagraphAlignmentType . Center
} ) ;
2023-05-19 22:30:05 +04:00
foreach ( var transfer in info . Transfers )
{
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { "Зачисление №" + transfer . TransferId , transfer . TransferDate . ToShortDateString ( ) , "" , "" , "" , "" } ,
Style = "Normal" ,
ParagraphAlignment = PdfParagraphAlignmentType . Left
} ) ;
foreach ( var purchase in transfer . Purchases )
{
CreateRow ( new PdfRowParameters
{
Texts = new List < string > { "" , "" , "Закупка №" + purchase . Id , purchase . Amount . ToString ( ) , purchase . CurrencyName . ToString ( ) , purchase . PurchaseDate . ToShortDateString ( ) } ,
Style = "Normal" ,
ParagraphAlignment = PdfParagraphAlignmentType . Left
} ) ;
}
}
2023-05-19 19:00:15 +04:00
2023-05-19 22:30:05 +04:00
return SavePdf ( ) ;
2023-05-19 19:00:15 +04:00
}
/// <summary>
/// Создание doc-файла
/// </summary>
/// <param name="info"></param>
protected abstract void CreatePdf ( PdfInfo info ) ;
/// <summary>
/// Создание параграфа с текстом
/// </summary>
/// <param name="title"></param>
/// <param name="style"></param>
protected abstract void CreateParagraph ( PdfParagraph paragraph ) ;
/// <summary>
/// Создание таблицы
/// </summary>
/// <param name="title"></param>
/// <param name="style"></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>
2023-05-19 22:30:05 +04:00
protected abstract MemoryStream SavePdf ( ) ;
2023-05-19 19:00:15 +04:00
}
}