/// <summary>
        /// Makes a deep clone of the trigger
        /// </summary>
        /// <returns></returns>
        public override Trigger Clone()
        {
            var dailyFireWindow = new DailyFireWindow(DailyFireWindow.StartHour, DailyFireWindow.EndHour);
            var clone           = new DailyPeriodicWindowTrigger(startTimeUtc, endTimeUtc, dailyFireWindow, period, jobExecutionCountRemaining)
            {
                nextFireTimeUtc  = nextFireTimeUtc,
                misfireThreshold = misfireThreshold,
                misfireAction    = misfireAction,
                isFirstTime      = isFirstTime
            };

            return(clone);
        }
        /// <summary>
        /// Makes a deep clone of the trigger
        /// </summary>
        /// <returns></returns>
        public override Trigger Clone()
        {
            var dailyFireWindow = new DailyFireWindow(DailyFireWindow.StartHour, DailyFireWindow.EndHour);
            var clone = new DailyPeriodicWindowTrigger(startTimeUtc, endTimeUtc, dailyFireWindow, period, jobExecutionCountRemaining)
                                                   {
                                                       nextFireTimeUtc = nextFireTimeUtc,
                                                       misfireThreshold = misfireThreshold,
                                                       misfireAction = misfireAction,
                                                       isFirstTime = isFirstTime
                                                   };

            return clone;
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="startDateUtc">The UTC date for the trigger to start firing</param>
 /// <param name="endDateUtc">The UTC date for the trigger to stop firing</param>
 /// <param name="dailyFireWindow">Specifies the UTC hours when the trigger should fire</param>
 /// <param name="period">The recurrence period of the trigger.
 /// If the period is set to null, the trigger will fire exactly once
 /// and never recur.</param>
 /// <param name="jobExecutionCount">The number of job executions remaining before the trigger
 /// stops firing.  This number is decremented each time the job executes
 /// until it reaches zero.  If the count is set to null, the number of times the job
 /// may execute is unlimited.</param>
 public DailyPeriodicWindowTrigger(DateTime startDateUtc, DateTime?endDateUtc, DailyFireWindow dailyFireWindow, TimeSpan?period, int?jobExecutionCount)
     : base(startDateUtc, endDateUtc, period, jobExecutionCount)
 {
     DailyFireWindow = dailyFireWindow;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="startDateUtc">The UTC date for the trigger to start firing</param>
 /// <param name="endDateUtc">The UTC date for the trigger to stop firing</param>
 /// <param name="dailyFireWindow">Specifies the UTC hours when the trigger should fire</param>
 /// <param name="period">The recurrence period of the trigger.
 /// If the period is set to null, the trigger will fire exactly once
 /// and never recur.</param>
 /// <param name="jobExecutionCount">The number of job executions remaining before the trigger
 /// stops firing.  This number is decremented each time the job executes
 /// until it reaches zero.  If the count is set to null, the number of times the job
 /// may execute is unlimited.</param>
 public DailyPeriodicWindowTrigger(DateTime startDateUtc, DateTime? endDateUtc, DailyFireWindow dailyFireWindow, TimeSpan? period, int? jobExecutionCount)
     : base(startDateUtc, endDateUtc, period, jobExecutionCount)
 {
     DailyFireWindow = dailyFireWindow;
 }