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"; public static string PropertyName_Notice2 = "Notice2"; public static string PropertyName_Notice3 = "Notice3"; public static string PropertyName_Notice4 = "Notice4"; public static string PropertyName_Notice5 = "Notice5"; public static string PropertyName_IsTask = nameof(IsTask); public static string PropertyName_CompletedNotice = nameof(CompletedNotice); public static string PropertyName_CompletedUser = nameof(CompletedUser); public static string PropertyName_CompletedDate = nameof(CompletedDate); public static string PropertyName_TaskDescription = nameof(TaskDescription); public static string PropertyName_DueDate = nameof(DueDate); public static string PropertyName_SupportConceptList = nameof(SupportConceptList); private IList _EmployeeList; private IList _CustomerList; private IList _ResourceList; private IList _SupportConceptList; private bool _IsPrivate; private Employee _Originator; private long? _FormerBookingSequenceOid; private string _Notice2; private string _Notice3; private string _Notice4; private string _Notice5; private long? _FormerTaskOid; private bool _HasServiceRecordEntry; private IList _ServiceRecordList; public virtual bool HasServiceRecordEntry { get => _HasServiceRecordEntry; set { if(AreDifferent(_HasServiceRecordEntry, value)) { _HasServiceRecordEntry = value; } } } public virtual IList CustomerList { get => _CustomerList ?? (_CustomerList = new List()); set { if(AreDifferent(_CustomerList, value)) { _CustomerList = value; } } } public virtual bool IsPrivate { get => _IsPrivate; set { if(AreDifferent(_IsPrivate, value)) { _IsPrivate = value; } } } public virtual Employee Originator { get => _Originator; set { if(AreDifferent(_Originator, value)) { _Originator = value; } } } public virtual IList ResourceList { get => _ResourceList ?? (_ResourceList = new List()); set { if(AreDifferent(_ResourceList, value)) { _ResourceList = value; } } } public virtual IList EmployeeList { get => _EmployeeList ?? (_EmployeeList = new List()); set { if(AreDifferent(_EmployeeList, value)) { _EmployeeList = value; } } } public SchedulerAppointment() { _Tid = TableID.NewSchedulerAppointment; } public virtual bool AllDay { get; set; } public virtual DateTime? EndDate { get; set; } public virtual string Location { get; set; } public virtual string RecurrenceInfo { get; set; } public virtual string ReminderInfo { get; set; } public virtual DateTime? StartDate { get; set; } public virtual int Status { get; set; } public virtual string Subject { get; set; } //Normal = 0, //Pattern = 1, //Occurrence = 2, //ChangedOccurrence = 3, //DeletedOccurrence = 4 public virtual int Type { get; set; } public virtual bool IsTask { get; set; } public virtual string TaskDescription { get; set; } public virtual string CompletedNotice { get; set; } public virtual string CompletedUser { get; set; } public virtual DateTime? CompletedDate { get; set; } public virtual DateTime? DueDate { get; set; } public virtual long? FormerBookingSequenceOid { get => _FormerBookingSequenceOid; set { if(AreDifferent(_FormerBookingSequenceOid, value)) { _FormerBookingSequenceOid = value; } } } public virtual long? FormerTaskOid { get => _FormerTaskOid; set { if(AreDifferent(_FormerTaskOid, value)) { _FormerTaskOid = value; } } } public virtual string Notice2 { get => _Notice2; set { if(AreDifferent(_Notice2, value)) { _Notice2 = value; } } } public virtual string Notice3 { get => _Notice3; set { if(AreDifferent(_Notice3, value)) { _Notice3 = value; } } } public virtual string Notice4 { get => _Notice4; set { if(AreDifferent(_Notice4, value)) { _Notice4 = value; } } } public virtual string Notice5 { get => _Notice5; set { if(AreDifferent(_Notice5, value)) { _Notice5 = value; } } } public virtual IList SupportConceptList { get => _SupportConceptList ?? (_SupportConceptList = new List()); set { if(AreDifferent(_SupportConceptList, value)) { _SupportConceptList = value; } } } public virtual Guid? GetRecurrenceIdAndIndex(out int index) { if(RecurrenceInfo != null) { var recurrenceId = BS.Shared.Core.Utils.GetSpecificValueFromRecurrenceInfo(RecurrenceInfo, RecurrenceInfo.IndexOf("Id=\"") + 4); var recurrenceIndex = BS.Shared.Core.Utils.GetSpecificValueFromRecurrenceInfo(RecurrenceInfo, RecurrenceInfo.IndexOf("Index=\"") + 7); int.TryParse(recurrenceIndex, out index); if(Guid.TryParse(recurrenceId, out var guid)) { return guid; } } index = -1; return null; } public virtual string GetAppointmentType() { switch(Type) { case 0: return "Normal"; case 1: return "Pattern"; case 2: return "Occurrence"; case 3: return "Changed Occurrence"; case 4: return "Deleted Occurrence"; default: return "Normal"; } } public override string ToString() { return $"{StartDate?.ToString("dd.MM.yyyy HH:mm:ss")} - {EndDate?.ToString("dd.MM.yyyy HH:mm:ss")}: {Subject}"; } public virtual int? GetRecurrenceIndex() { if(RecurrenceInfo != null) { var indexString = BS.Shared.Core.Utils.GetSpecificValueFromRecurrenceInfo(RecurrenceInfo, RecurrenceInfo.IndexOf("Index=\\") + 7); if(int.TryParse(indexString, out var index)) { return index; } } return null; } public virtual Guid? GetRecurrenceId() { if(RecurrenceInfo != null) { var idString = BS.Shared.Core.Utils.GetSpecificValueFromRecurrenceInfo(RecurrenceInfo, RecurrenceInfo.IndexOf("Id=\"") + 4); if(Guid.TryParse(idString, out var guid)) { return guid; } } return null; } public virtual IList ServiceRecordList { get => _ServiceRecordList ?? (_ServiceRecordList = new List()); set { if(AreDifferent(_ServiceRecordList, value)) { _ServiceRecordList = value; } } } } }