using ComputersShopBusinessLogic.OfficePackage.HelperEnums;
using ComputersShopBusinessLogic.OfficePackage.HelperModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ComputersShopBusinessLogic.OfficePackage
{
	public abstract class AbstractSaveToWord
	{
		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
				}
			});

			foreach (var comp in info.Computers)
			{
				CreateParagraph(new WordParagraph
				{
					Texts = new List<(string, WordTextProperties)>
					{(comp.ComputerName + " - ", new WordTextProperties { Size = "24", Bold = true}),
					 (comp.Price.ToString(), new WordTextProperties { Size = "24", })},

					TextProperties = new WordTextProperties
					{
						Size = "24",
						JustificationType = WordJustificationType.Both
					}
				});
			}
			SaveWord(info);
		}

		protected abstract void CreateWord(WordInfo info);

		protected abstract void CreateParagraph(WordParagraph paragraph);

		protected abstract void SaveWord(WordInfo info);
	}
}
