bool TriggerEqual(IScheduleTrigger otherTrigger, IScheduleTrigger trigger)
        {
            if (otherTrigger.State != trigger.State)
            {
                return(false);
            }
            if (otherTrigger.Trigger == null && trigger.Trigger != null)
            {
                return(false);
            }
            if (otherTrigger.Trigger != null && trigger.Trigger == null)
            {
                return(false);
            }
            if (otherTrigger.Trigger != null && trigger.Trigger != null)
            {
                if (otherTrigger.Trigger.Enabled != trigger.Trigger.Enabled)
                {
                    return(false);
                }
                if (otherTrigger.Trigger.EndBoundary != trigger.Trigger.EndBoundary)
                {
                    return(false);
                }
                if (otherTrigger.Trigger.StartBoundary != trigger.Trigger.StartBoundary)
                {
                    return(false);
                }
                if (otherTrigger.Trigger.TriggerType != trigger.Trigger.TriggerType)
                {
                    return(false);
                }
                if (otherTrigger.Trigger.Repetition == null && otherTrigger.Trigger.Repetition != null)
                {
                    return(false);
                }

                if (otherTrigger.Trigger.Repetition != null && otherTrigger.Trigger.Repetition == null)
                {
                    return(false);
                }
                if (otherTrigger.Trigger.Repetition != null && trigger.Trigger.Repetition != null)
                {
                    if (otherTrigger.Trigger.Repetition.Duration != trigger.Trigger.Repetition.Duration)
                    {
                        return(false);
                    }
                    if (otherTrigger.Trigger.Repetition.Interval != trigger.Trigger.Repetition.Interval)
                    {
                        return(false);
                    }
                    if (otherTrigger.Trigger.Repetition.StopAtDurationEnd != trigger.Trigger.Repetition.StopAtDurationEnd)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
        public ScheduledResource(string name, SchedulerStatus status, DateTime nextRunDate, IScheduleTrigger trigger, string workflowName)
        {

            var history = name.Split('~');

            WorkflowName = workflowName;
            Trigger = trigger;

            NextRunDate = nextRunDate;
            Status = status;
            Name = history.First();
            if(history.Length == 2)
                NumberOfHistoryToKeep = int.Parse(history[1]);
            IsDirty = false;
            _errors = new ErrorResultTO();
        }
        public ScheduledResource(string name, SchedulerStatus status, DateTime nextRunDate, IScheduleTrigger trigger, string workflowName)
        {
            var history = name.Split('~');

            WorkflowName = workflowName;
            Trigger      = trigger;

            NextRunDate = nextRunDate;
            Status      = status;
            Name        = history.First();
            if (history.Length == 2)
            {
                NumberOfHistoryToKeep = int.Parse(history[1]);
            }
            IsDirty = false;
            _errors = new ErrorResultTO();
        }