using System; using System.Diagnostics; using System.Runtime.Serialization; namespace BS.Shared.DataContracts { [DebuggerDisplay("{Start} - {End}")] [DataContract, Serializable] public partial class AbsenceTimeDC : IDataContract { [DataMember] public long? AbsenceTimeOid { get; set; } [DataMember] public long? AbsenceTimeVersion { get; set; } [DataMember] public DateTime? End { get; set; } [DataMember] public string Notice { get; set; } [DataMember] public AbsenceReasonDC Reason { get; set; } [DataMember] public long? EmployeeOid { get; set; } [DataMember] public long? CustomerOid { get; set; } [DataMember] public DateTime? Start { get; set; } [DataMember] public DateTime? KrankheitsMeldung { get; set; } [DataMember] public string BackgroundColor { get; set; } public bool IsInThePast => End.HasValue && End.Value.Date < DateTime.Today; public bool IsAllDay { get { if(End is null && Start is null || (End != null && Start is null)) { return false; } var start = Start.Value; var end = End.HasValue == false ? DateTime.MaxValue : End.Value; return start.Hour == 0 && start.Minute == 0 && start.Second == 0 && (end == DateTime.MaxValue || end.Hour == 0 && end.Minute == 0 && end.Second == 0); } } public override bool Equals(object obj) { if (obj is AbsenceTimeDC) { var y = (AbsenceTimeDC) obj; if (AbsenceTimeOid == null && y.AbsenceTimeOid == null) { return GetHashCode() == y.GetHashCode(); } if (AbsenceTimeOid != null && y.AbsenceTimeOid != null) { return AbsenceTimeOid == y.AbsenceTimeOid; } if (Start == y.Start && End == y.End && Notice == y.Notice && CustomerOid == y.CustomerOid && EmployeeOid == y.EmployeeOid) { if (Reason == null && y.Reason == null) return true; if (Reason != null && y.Reason != null && Reason.AbsenceReasonOid == y.Reason.AbsenceReasonOid) return true; } } return false; } public override int GetHashCode() { return AbsenceTimeOid.HasValue ? GetType().Name.GetHashCode() ^ AbsenceTimeOid.GetHashCode() : base.GetHashCode(); } } }