using System;
using System.Collections.Generic;

using BS.Shared;

namespace BeWo.Data.Entities
{
	public class SchedulerAppointment : BeWoEntityBase
	{
		public static string PropertyName_AllDay = "AllDay";
		public static string PropertyName_CustomerList = "CustomerList";
		public static string PropertyName_EmployeeList = "EmployeeList";
		public static string PropertyName_EndDate = "EndDate";
		public static string PropertyName_IsPrivate = "IsPrivate";
		public static string PropertyName_Location = "Location";
		public static string PropertyName_Originator = "Originator";
		public static string PropertyName_RecurrenceInfo = "RecurrenceInfo";
		public static string PropertyName_ReminderInfo = "ReminderInfo";
		public static string PropertyName_ResourceList = "ResourceList";
		public static string PropertyName_StartDate = "StartDate";
		public static string PropertyName_Status = "Status";
		public static string PropertyName_Subject = "Subject";
		public static string PropertyName_Type = "Type";
		public static string PropertyName_FormerBookingSequenceOid = "FormerBookingSequenceOid";

		private IList<Employee2SchedulerAppointment> _EmployeeList;
		private IList<Customer> _CustomerList;
		private IList<Resource> _ResourceList;
		private bool _IsPrivate;
		private Employee _Originator;
		private long? _FormerBookingSequenceOid;

		public SchedulerAppointment()
		{
			_Tid = TableID.NewSchedulerAppointment;
		}


		public virtual bool AllDay { get; set; }
		public virtual IList<Customer> CustomerList
		{
			get { return _CustomerList ?? (_CustomerList = new List<Customer>()); }

			set
			{
				if (AreDifferent(_CustomerList, value))
					_CustomerList = value;
			}
		}
		public virtual DateTime? EndDate { get; set; }
		public virtual bool IsPrivate
		{
			get { return _IsPrivate; }
			set
			{
				if (AreDifferent(_IsPrivate, value))
					_IsPrivate = value;
			}
		}
		public virtual String Location { get; set; }
		public virtual Employee Originator
		{
			get { return _Originator; }
			set
			{
				if (AreDifferent(_Originator, value))
					_Originator = value;
			}
		}
		public virtual String RecurrenceInfo { get; set; }
		public virtual String ReminderInfo { get; set; }
		public virtual IList<Resource> ResourceList
		{
			get { return _ResourceList ?? (_ResourceList = new List<Resource>()); }

			set
			{
				if (AreDifferent(_ResourceList, value))
					_ResourceList = value;
			}
		}
		public virtual IList<Employee2SchedulerAppointment> EmployeeList
		{
			get { return _EmployeeList ?? (_EmployeeList = new List<Employee2SchedulerAppointment>()); }

			set
			{
				if (AreDifferent(_EmployeeList, value))
					_EmployeeList = value;
			}
		}
		public virtual DateTime? StartDate { get; set; }
		public virtual int Status { get; set; }
		public virtual String Subject { get; set; }
		public virtual int Type { get; set; }

		public virtual long? FormerBookingSequenceOid
		{
			get { return _FormerBookingSequenceOid; }

			set
			{
				if (AreDifferent(_FormerBookingSequenceOid, value))
					_FormerBookingSequenceOid = value;
			}
		}
	}
}
