/// <summary>
        /// Returns true if HoursAssignment instances are equal
        /// </summary>
        /// <param name="other">Instance of HoursAssignment to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(HoursAssignment other)
        {
            if (other is null)
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     Id == other.Id ||

                     Id.Equals(other.Id)
                     ) &&
                 (
                     When == other.When ||
                     When != null &&
                     When.Equals(other.When)
                 ) &&
                 (
                     Actual == other.Actual ||
                     Actual != null &&
                     Actual.Equals(other.Actual)
                 ) &&
                 (
                     WorkTime == other.WorkTime ||

                     WorkTime.Equals(other.WorkTime)
                 ) &&
                 (
                     ContractedTime == other.ContractedTime ||

                     ContractedTime.Equals(other.ContractedTime)
                 ) &&
                 (
                     PayState == other.PayState ||

                     PayState.Equals(other.PayState)
                 ) &&
                 (
                     EmployeeType == other.EmployeeType ||
                     EmployeeType != null &&
                     EmployeeType.Equals(other.EmployeeType)
                 ) &&
                 (
                     Person == other.Person ||
                     Person != null &&
                     Person.Equals(other.Person)
                 ) &&
                 (
                     Assignment == other.Assignment ||
                     Assignment != null &&
                     Assignment.Equals(other.Assignment)
                 ) &&
                 (
                     Post == other.Post ||
                     Post != null &&
                     Post.Equals(other.Post)
                 ) &&
                 (
                     Posting == other.Posting ||
                     Posting != null &&
                     Posting.Equals(other.Posting)
                 ) &&
                 (
                     Cancellation == other.Cancellation ||
                     Cancellation != null &&
                     Cancellation.Equals(other.Cancellation)
                 ) &&
                 (
                     InCharge == other.InCharge ||

                     InCharge.Equals(other.InCharge)
                 ) &&
                 (
                     Shift == other.Shift ||
                     Shift != null &&
                     Shift.Equals(other.Shift)
                 ) &&
                 (
                     Duty == other.Duty ||
                     Duty != null &&
                     Duty.Equals(other.Duty)
                 ) &&
                 (
                     Fulfillment == other.Fulfillment ||
                     Fulfillment != null &&
                     Fulfillment.Equals(other.Fulfillment)
                 ) &&
                 (
                     CostCentre == other.CostCentre ||
                     CostCentre != null &&
                     CostCentre.Equals(other.CostCentre)
                 ) &&
                 (
                     OwningUnit == other.OwningUnit ||
                     OwningUnit != null &&
                     OwningUnit.Equals(other.OwningUnit)
                 ) &&
                 (
                     ResourcingUnit == other.ResourcingUnit ||
                     ResourcingUnit != null &&
                     ResourcingUnit.Equals(other.ResourcingUnit)
                 ) &&
                 (
                     Requirement == other.Requirement ||
                     Requirement != null &&
                     Requirement.Equals(other.Requirement)
                 ) &&
                 (
                     Location == other.Location ||
                     Location != null &&
                     Location.Equals(other.Location)
                 ) &&
                 (
                     AdditionalDutyReason == other.AdditionalDutyReason ||
                     AdditionalDutyReason != null &&
                     AdditionalDutyReason.Equals(other.AdditionalDutyReason)
                 ) &&
                 (
                     DutyHasWarnings == other.DutyHasWarnings ||

                     DutyHasWarnings.Equals(other.DutyHasWarnings)
                 ));
        }