using System;
using System.Collections.Generic;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BeWo.Data.Access;
using BeWo.Data.Entities;

namespace BeWoRueckenwind.Invoicing
{
	public class BeWoRueckenwindInvoiceFactory : InvoiceFactory
	{
		
		public override InvoiceCreation CreateInvoiceCreator(string specificId, string tenant, Dictionary<CompactSupportConceptDC, List<ServiceRecordDC>> supportConcepts2ServiceRecords)
		{
			foreach (var list in supportConcepts2ServiceRecords.Values)
			{
				
				foreach (var sr in list)
				{
					var sd = sr.ServiceDescription.Category;
					var ic = GetInvoiceCreatorForCategory(sd);
					if (ic != null)
						return ic;
				}
			}


			return new InvoiceCreation();

				
		}

		private InvoiceCreation GetInvoiceCreatorForCategory(ServiceCategoryDC sd)
		{
			if (sd != null && !String.IsNullOrEmpty(sd.Name))
			{
				String cat = sd.Name.ToLower().Trim();
				if (cat.IndexOf("assistenz") >= 0)
				{
					return new BeWoRueckenwindAssistenzInvoiceCreation();
				}
				
			}
			return new BeWoRueckenwindDefaultInvoiceCreation();
		}

	}
}
