private void ProcessCondition(Condition condition)
        {
            switch ((ConditionType)condition.ConditionType)
            {
            case ConditionType.RunOn:
                SetLiteralDate(condition);
                break;

            case ConditionType.RunOnTimeWindow:
                AfterTimeUtc  = condition.IsNegative ? condition.BeforeTimeUtc : condition.AfterTimeUtc;
                BeforeTimeUtc = condition.IsNegative ? condition.AfterTimeUtc : condition.BeforeTimeUtc;
                break;
            }
        }
 public SetFreqDto(Condition condition)
 {
     ProcessCondition(condition);
 }
        public void SetLiteralDate(Condition condition)
        {
            void AddDateCondition(string strCondition)
            {
                if (_runOnSpecific != null)
                {
                    StringDates.Remove("Daily");
                }

                if (!condition.IsNegative)
                {
                    StringDates.Add(strCondition);
                }
                else
                {
                    ExceptDates.Add(strCondition);
                }
            }

            string dateLiteral;

            switch ((DateInterval?)condition.DateInterval)
            {
            case DateInterval.Daily:
                StringDates.Add(condition.PrimaryFrequency == 0
                        ? "Daily"
                        : $"Every {condition.PrimaryFrequency} days");
                break;

            case DateInterval.OnWeekday:
                if (condition.SecondaryFrequency == 0)
                {
                    _runOnSpecific = $"{(DayOfTheWeek) condition.PrimaryFrequency}";
                    AddDateCondition(_runOnSpecific);
                }
                else
                {
                    if (condition.SecondaryFrequency == 5)
                    {
                        _runOnSpecific = "last";
                        dateLiteral    = $"{_runOnSpecific} {(DayOfTheWeek)condition.PrimaryFrequency} of month";
                    }
                    else
                    {
                        _runOnSpecific = condition.SecondaryFrequency.ToString();
                        dateLiteral    = $"{_runOnSpecific} {(DayOfTheWeek)condition.PrimaryFrequency} of month";
                    }

                    AddDateCondition(dateLiteral);
                }

                break;

            case DateInterval.DayDuringMonth:
                if (condition.PrimaryFrequency < 1 || condition.PrimaryFrequency > 31)
                {
                    _runOnSpecific = "last";
                }
                else
                {
                    _runOnSpecific = condition.PrimaryFrequency.ToString();
                }
                AddDateCondition($"{_runOnSpecific} day of month");
                break;

            case DateInterval.DuringMonth:
                StringDates.RemoveWhere(str => str.Contains("day of month"));
                dateLiteral = $"{_runOnSpecific} day of {(Month) condition.PrimaryFrequency}";
                AddDateCondition(dateLiteral);
                break;

            case DateInterval.OnDate:
            case DateInterval.AfterOrOnDate:
            case DateInterval.BeforeOrOnDate:
                _runOnSpecific = $"{condition.SecondaryFrequency}";
                AddDateCondition($@"{_runOnSpecific}-{(Month)condition.PrimaryFrequency}");
                break;

            case DateInterval.WeekDuringMonth:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }