287 lines
8.4 KiB
C#
287 lines
8.4 KiB
C#
using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums;
|
||
using BankYouBankruptBusinessLogic.OfficePackage.HelperModels;
|
||
using BankYouBankruptDataModels.Enums;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace BankYouBankruptBusinessLogic.OfficePackage
|
||
{
|
||
public abstract class AbstractSaveToWord
|
||
{
|
||
//метод создания документа
|
||
public void CreateDoc(WordInfo info, OfficeOperationEnum operationEnum)
|
||
{
|
||
if (operationEnum == OfficeOperationEnum.Между_cчетами)
|
||
{
|
||
CreateMoneyTransferWord(info);
|
||
}
|
||
|
||
if (operationEnum == OfficeOperationEnum.Пополнение_карт)
|
||
{
|
||
CreateCreditingWord(info);
|
||
}
|
||
|
||
if (operationEnum == OfficeOperationEnum.Cнятие_с_карты)
|
||
{
|
||
CreateDebitingWord(info);
|
||
}
|
||
|
||
if (operationEnum == OfficeOperationEnum.Для_кассира)
|
||
{
|
||
CreateCashierWord(info);
|
||
}
|
||
}
|
||
|
||
private void CreateMoneyTransferWord(WordInfo info)
|
||
{
|
||
CreateWord(info);
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
foreach (var transfer in info.MoneyTransfer)
|
||
{
|
||
List<List<(string, WordTextProperties)>> rowList = new()
|
||
{
|
||
new()
|
||
{
|
||
new("Номер счёта отправителя", new WordTextProperties { Bold = true, Size = "20" } ),
|
||
new("Номер счёта получателя", new WordTextProperties { Bold = true, Size = "20" } ),
|
||
new("Сумма операции", new WordTextProperties { Bold = true, Size = "20" } ),
|
||
new("Дата перевода", new WordTextProperties { Bold = true, Size = "20" } )
|
||
}
|
||
};
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { ("Перевод №" + transfer.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
List<(string, WordTextProperties)> cellList = new()
|
||
{
|
||
new(transfer.AccountSenderNumber, new WordTextProperties { Size = "20" }),
|
||
new(transfer.AccountPayeeNumber, new WordTextProperties { Size = "20" }),
|
||
new(transfer.Sum.ToString(), new WordTextProperties { Size = "20"}),
|
||
new(transfer.DateOperation.ToString(), new WordTextProperties { Size = "20"}),
|
||
};
|
||
|
||
rowList.Add(cellList);
|
||
|
||
CreateTable(new WordParagraph
|
||
{
|
||
RowTexts = rowList,
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
}
|
||
|
||
SaveWord(info);
|
||
}
|
||
|
||
private void CreateCreditingWord(WordInfo info)
|
||
{
|
||
CreateWord(info);
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
foreach (var crediting in info.Crediting)
|
||
{
|
||
List<List<(string, WordTextProperties)>> rowList = new()
|
||
{
|
||
new()
|
||
{
|
||
new("Номер карты", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Сумма пополнения", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Дата выполнения", new WordTextProperties { Bold = true, Size = "24" } )
|
||
}
|
||
};
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { ("Пополнение №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
List<(string, WordTextProperties)> cellList = new()
|
||
{
|
||
new(crediting.CardNumber, new WordTextProperties { Size = "24" }),
|
||
new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }),
|
||
new(crediting.DateClose == null ? "В обработке" : crediting.DateClose.ToString(), new WordTextProperties { Size = "24" })
|
||
};
|
||
|
||
rowList.Add(cellList);
|
||
|
||
CreateTable(new WordParagraph
|
||
{
|
||
RowTexts = rowList,
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
}
|
||
|
||
SaveWord(info);
|
||
}
|
||
|
||
private void CreateDebitingWord(WordInfo info)
|
||
{
|
||
CreateWord(info);
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
foreach (var crediting in info.Debiting)
|
||
{
|
||
List<List<(string, WordTextProperties)>> rowList = new()
|
||
{
|
||
new()
|
||
{
|
||
new("Номер карты", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Сумма снятия", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Дата выполнения", new WordTextProperties { Bold = true, Size = "24" } )
|
||
}
|
||
};
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { ("Снятие №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
List<(string, WordTextProperties)> cellList = new()
|
||
{
|
||
new(crediting.CardNumber, new WordTextProperties { Size = "24" }),
|
||
new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }),
|
||
new(crediting.DateClose == null ? "В обработке" : crediting.DateClose.ToString(), new WordTextProperties { Size = "24" })
|
||
};
|
||
|
||
rowList.Add(cellList);
|
||
|
||
CreateTable(new WordParagraph
|
||
{
|
||
RowTexts = rowList,
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
}
|
||
|
||
SaveWord(info);
|
||
}
|
||
|
||
private void CreateCashierWord(WordInfo info)
|
||
{
|
||
CreateWord(info);
|
||
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
foreach (var crediting in info.Debiting)
|
||
{
|
||
List<List<(string, WordTextProperties)>> rowList = new()
|
||
{
|
||
new()
|
||
{
|
||
new("Сумма заявки", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Дата открытия", new WordTextProperties { Bold = true, Size = "24" } ),
|
||
new("Статус", new WordTextProperties { Bold = true, Size = "24" } )
|
||
}
|
||
};
|
||
CreateParagraph(new WordParagraph
|
||
{
|
||
Texts = new List<(string, WordTextProperties)> { ("Заявка №" + crediting.Id.ToString(), new WordTextProperties { Bold = true, Size = "24" }) },
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
|
||
List<(string, WordTextProperties)> cellList = new()
|
||
{
|
||
new(crediting.Sum.ToString(), new WordTextProperties { Size = "24" }),
|
||
new(crediting.DateOpen.ToString(), new WordTextProperties { Size = "24" }),
|
||
new(crediting.Status.ToString(), new WordTextProperties { Size = "24" })
|
||
};
|
||
|
||
rowList.Add(cellList);
|
||
|
||
CreateTable(new WordParagraph
|
||
{
|
||
RowTexts = rowList,
|
||
TextProperties = new WordTextProperties
|
||
{
|
||
Size = "24",
|
||
JustificationType = WordJustificationType.Center
|
||
}
|
||
});
|
||
}
|
||
|
||
SaveWord(info);
|
||
}
|
||
|
||
// Создание doc-файла
|
||
protected abstract void CreateWord(WordInfo info);
|
||
|
||
// Создание абзаца с текстом
|
||
protected abstract void CreateParagraph(WordParagraph paragraph);
|
||
|
||
//Создание таблицы
|
||
protected abstract void CreateTable(WordParagraph paragraph);
|
||
|
||
// Сохранение файла
|
||
protected abstract void SaveWord(WordInfo info);
|
||
}
|
||
}
|