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

namespace VetClinicBusinessLogic.OfficePackage
{
	public abstract class AbstractSaveToWordPharmacist
	{
		public void CreateDoc(WordInfoPharmacist 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 rec in info.ServicesAnimals)
			{
				CreateParagraph(new WordParagraph
				{
					Texts = new List<(string, WordTextProperties)>
					{ (rec.ServiceName, new WordTextProperties { Size = "24", Bold=true})},
					TextProperties = new WordTextProperties
					{
						Size = "24",
						JustificationType = WordJustificationType.Both
					}
				});

				foreach (var animal in rec.Animals)
				{
					CreateParagraph(new WordParagraph
					{
						Texts = new List<(string, WordTextProperties)>
						{ (animal.AnimalName, new WordTextProperties { Size = "20", Bold=false})},
						TextProperties = new WordTextProperties
						{
							Size = "24",
							JustificationType = WordJustificationType.Both
						}
					}) ;
				}
			}
			SaveWord(info);
		}

		protected abstract void CreateWord(WordInfoPharmacist info);
		protected abstract void CreateParagraph(WordParagraph paragraph);
		protected abstract void SaveWord(WordInfoPharmacist info);
	}
}
