using DocumentFormat.OpenXml.EMMA; using FurnitureAssemblyBusinessLogic.OfficePackage.HelperEnums; using FurnitureAssemblyBusinessLogic.OfficePackage.HelperModels; namespace FurnitureAssemblyBusinessLogic.OfficePackage { public abstract class AbstractSaveToWord { public void CreateTableDoc(WordInfo wordInfo) { CreateWord(wordInfo); CreateParagraph(new WordParagraph { Texts = new List<(string, WordTextProperties)> { (wordInfo.Title, new WordTextProperties { Bold = true, Size = "24", }) }, TextProperties = new WordTextProperties { Size = "24", JustificationType = WordJustificationType.Center } }); WordTable wordTable = new(); if (wordInfo is WordInfoShops infoShops) { wordTable = CreateTableDocShops(infoShops); } CreateTable(wordTable); SaveWord(wordInfo); } private WordTable CreateTableDocShops(WordInfoShops wordInfo) { var list = new List(); foreach (var shop in wordInfo.Shops) { list.Add(shop.ShopName); list.Add(shop.Address); list.Add(shop.DateOpening.ToString()); } var wordTable = new WordTable { Headers = new List { "Название", "Адрес", "Дата открытия"}, Texts = list }; return wordTable; } public void CreateDoc(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 } }); if (info is WordInfoFurnitures infoFurnitures) { foreach (var furniture in infoFurnitures.Furnitures) { CreateParagraph(new WordParagraph { Texts = new List<(string, WordTextProperties)> { (furniture.FurnitureName, new WordTextProperties { Size = "24", Bold=true}), (" - " + furniture.Price.ToString(), new WordTextProperties { Size = "24", }) }, TextProperties = new WordTextProperties { Size = "24", JustificationType = WordJustificationType.Both } }); } } SaveWord(info); } /// /// Создание doc-файла /// /// protected abstract void CreateWord(WordInfo info); protected abstract void CreateTable(WordTable info); /// /// Создание абзаца с текстом /// /// /// protected abstract void CreateParagraph(WordParagraph paragraph); /// /// Сохранение файла /// /// protected abstract void SaveWord(WordInfo info); } }