using System; using System.Collections.Generic; using System.Runtime.Serialization; using BS.Shared.Core; namespace BS.Shared.DataContracts { [DataContract] public class SupportConceptApprovalPeriodDC : IDataContract { [DataMember] public SupportConceptApprovalInterval? ApprovedBEInterval { get; set; } [DataMember] public decimal? ApprovedBEPerInterval { get; set; } [DataMember] public SupportConceptApprovalInterval? ContactCountInterval { get; set; } [DataMember] public decimal? ContactCountPerInterval { get; set; } [DataMember] public decimal? ApprovedBETotal { get; set; } [DataMember] public decimal? ApprovedFixedAmount { get; set; } [DataMember] public SupportConceptApprovalInterval? ApprovedFixedAmountInterval { get; set; } [DataMember] public DateTime? EndDate { get; set; } [DataMember] public bool IsApprovedBEShifting { get; set; } [DataMember] public bool IsApprovedFixedAmountShifting { get; set; } [DataMember] public decimal? MonthlyPayment { get; set; } public DateTimeSpan Span { get { var sd = DateTime.MinValue; var ed = DateTime.MaxValue; if (StartDate.HasValue) { sd = StartDate.Value; } if (EndDate.HasValue) { ed = EndDate.Value; } return new DateTimeSpan { StartDateTime = sd, EndDateTime = ed }; } } [DataMember] public DateTime? StartDate { get; set; } [DataMember] public decimal? Percentage { get; set; } [DataMember] public long? SupportConceptApprovalPeriodOid { get; set; } [DataMember] public long? SupportConceptApprovalPeriodVersion { get; set; } [DataMember] public ServiceCategoryDC ServiceCategory { get; set; } [DataMember] public List SupportConceptApprovalPeriodEmployeeRelations { get; set; } [DataMember] public BudgetDC BudgetDC { get; set; } [DataMember] public Bewilligungsart Bewilligungsart { get; set; } public override bool Equals(object obj) { if(obj is SupportConceptApprovalPeriodDC x) { var a = Equals(ApprovedBEInterval, x.ApprovedBEInterval); var b = Equals(ApprovedBEPerInterval, x.ApprovedBEPerInterval); var c = Equals(ContactCountInterval, x.ContactCountInterval); var d = Equals(ContactCountPerInterval, x.ContactCountPerInterval); var e = Equals(ApprovedBETotal, x.ApprovedBETotal); var f = Equals(ApprovedFixedAmount, x.ApprovedFixedAmount); var g = Equals(ApprovedFixedAmountInterval, x.ApprovedFixedAmountInterval); var h = Equals(EndDate, x.EndDate); var i = Equals(IsApprovedBEShifting, x.IsApprovedBEShifting); var j = Equals(IsApprovedFixedAmountShifting, x.IsApprovedFixedAmountShifting); var k = Equals(MonthlyPayment, x.MonthlyPayment); var l = Equals(Span, x.Span); var m = Equals(StartDate, x.StartDate); var n = Equals(Percentage, x.Percentage); var o = Equals(SupportConceptApprovalPeriodOid, x.SupportConceptApprovalPeriodOid); var p = Equals(SupportConceptApprovalPeriodVersion, x.SupportConceptApprovalPeriodVersion); var q = Equals(ServiceCategory, x.ServiceCategory); var r = Equals(BudgetDC, x.BudgetDC); var s = Utils.ListsEqual(SupportConceptApprovalPeriodEmployeeRelations, x.SupportConceptApprovalPeriodEmployeeRelations); var t = Equals(Bewilligungsart, x.Bewilligungsart); return a && b && c && d && e && f && g && h && i && j && k && l && m && n && o && p && q && r && s && t; } return false; } public override int GetHashCode() { unchecked { const int hashingBase = (int)2166136261; const int hashingMultiplier = 16777619; var hash = hashingBase; hash = (hash * hashingMultiplier) ^ (SupportConceptApprovalPeriodOid?.GetHashCode() ?? 0); hash = (hash * hashingMultiplier) ^ (SupportConceptApprovalPeriodVersion?.GetHashCode() ?? 0); return hash; } } } }