using System;
using System.Collections.Generic;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;


namespace BeWo.BetreutesWohnenAmRheinReports
{
	public class BWARMitarbeiterstundenkontoBerechnung : MitarbeiterstundenkontoBerechnung
	{
		public override void CreateEmployeeDetails(MitarbeiterstundenkontoRO ro)
		{
			base.CreateEmployeeDetails(ro);

			if (ro.ReportStartDate >= new DateTime(2014, 6, 1))
			{
				bool auchVormonat = ro.ReportStartDate >= new DateTime(2014, 7, 1);
				foreach (var employeeDetail in ro.EmployeeDetailList)
				{
					if (employeeDetail.LastName == "Borutta")
					{
						AddUeberstunden(employeeDetail, 9, auchVormonat);
					}
					else if (employeeDetail.LastName == "Gutzeit")
					{
						AddUeberstunden(employeeDetail, 13, auchVormonat);
					}
					else if (employeeDetail.LastName == "Statnik")
					{
						AddUeberstunden(employeeDetail, 3.5m, auchVormonat);
					}
					else if (employeeDetail.LastName == "Wagner")
					{
						AddUeberstunden(employeeDetail, 8, auchVormonat);
					}
				}
			}
			
		}


		private void AddUeberstunden(MitarbeiterstundenkontoRO.EmployeeDetail employeeDetail, decimal stunden, bool auchVormonat)
		{
			if (!employeeDetail.Ueberstunden.HasValue)
			{
				employeeDetail.Ueberstunden = 0;
			}
			if (!employeeDetail.UeberstundenGesamt.HasValue)
			{
				employeeDetail.UeberstundenGesamt = 0;
			}
			if (auchVormonat)
			{
				if (!employeeDetail.UeberstundenVormonat.HasValue)
				{
					employeeDetail.UeberstundenVormonat = 0;
				}
				employeeDetail.UeberstundenVormonat += stunden;
			}
			employeeDetail.UeberstundenGesamt += stunden;
		}

		public override bool AddServiceRecordToDuration(ServiceRecord item)
		{
			if (item.ServiceDescription != null && item.ServiceDescription.ServiceCategory != null)
			{
				if (item.ServiceDescription.ServiceCategory.Name == "Arbeitszeit")
				{
					return true;
				}
			}
			return false;
		}
	}
}
