/// <summary>
        /// Initializes a new instance of the <see cref="ManagementUnitSettings" /> class.
        /// </summary>


        /// <param name="Adherence">Adherence settings for this management unit.</param>



        /// <param name="ShortTermForecasting">Short term forecasting settings for this management unit.</param>



        /// <param name="TimeOff">Time off request settings for this management unit.</param>



        /// <param name="Scheduling">Scheduling settings for this management unit.</param>



        /// <param name="Metadata">Version info metadata for the associated management unit (required).</param>


        public ManagementUnitSettings(AdherenceSettings Adherence = null, ShortTermForecastingSettings ShortTermForecasting = null, TimeOffRequestSettings TimeOff = null, SchedulingSettings Scheduling = null, WfmVersionedEntityMetadata Metadata = null)
        {
            // to ensure "Metadata" is required (not null)
            if (Metadata == null)
            {
                throw new InvalidDataException("Metadata is a required property for ManagementUnitSettings and cannot be null");
            }
            else
            {
                this.Metadata = Metadata;
            }



            this.Adherence = Adherence;



            this.ShortTermForecasting = ShortTermForecasting;



            this.TimeOff = TimeOff;



            this.Scheduling = Scheduling;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CreateManagementUnitSettings" /> class.
 /// </summary>
 /// <param name="Adherence">Adherence settings for this management unit.</param>
 /// <param name="ShortTermForecasting">Short term forecasting settings for this management unit.</param>
 /// <param name="TimeOff">Time off request settings for this management unit.</param>
 /// <param name="Scheduling">Scheduling settings for this management unit.</param>
 /// <param name="ShiftTrading">Shift trade settings for this management unit.</param>
 public CreateManagementUnitSettings(AdherenceSettings Adherence = null, ShortTermForecastingSettings ShortTermForecasting = null, TimeOffRequestSettings TimeOff = null, SchedulingSettings Scheduling = null, ShiftTradeSettings ShiftTrading = null)
 {
     this.Adherence            = Adherence;
     this.ShortTermForecasting = ShortTermForecasting;
     this.TimeOff      = TimeOff;
     this.Scheduling   = Scheduling;
     this.ShiftTrading = ShiftTrading;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ManagementUnitSettingsRequest" /> class.
 /// </summary>
 /// <param name="Adherence">Adherence settings for this management unit.</param>
 /// <param name="ShortTermForecasting">Short term forecasting settings for this management unit.  Moving to Business Unit.</param>
 /// <param name="TimeOff">Time off request settings for this management unit.</param>
 /// <param name="Scheduling">Scheduling settings for this management unit.</param>
 /// <param name="ShiftTrading">Shift trade settings for this management unit.</param>
 /// <param name="Metadata">Version info metadata for the associated management unit (required).</param>
 public ManagementUnitSettingsRequest(AdherenceSettings Adherence = null, ShortTermForecastingSettings ShortTermForecasting = null, TimeOffRequestSettings TimeOff = null, SchedulingSettingsRequest Scheduling = null, ShiftTradeSettings ShiftTrading = null, WfmVersionedEntityMetadata Metadata = null)
 {
     this.Adherence            = Adherence;
     this.ShortTermForecasting = ShortTermForecasting;
     this.TimeOff      = TimeOff;
     this.Scheduling   = Scheduling;
     this.ShiftTrading = ShiftTrading;
     this.Metadata     = Metadata;
 }