/// <summary>
        /// Whether run parameters meet this criteria
        /// </summary>
        /// <param name="days"></param>
        /// <param name="campaigns"></param>
        /// <returns></returns>
        public bool MeetsCriteria(int days, int salesAreas, int campaigns, int demographics, int breaks)
        {
            bool meetsCriteria = false;

            if (days <= MaxDays.GetValueOrDefault(Int32.MaxValue))
            {
                if (salesAreas <= MaxSalesAreas.GetValueOrDefault(Int32.MaxValue))
                {
                    if (demographics <= MaxDemographics.GetValueOrDefault(Int32.MaxValue))
                    {
                        if (campaigns <= MaxCampaigns.GetValueOrDefault(Int32.MaxValue))
                        {
                            if (breaks <= MaxBreaks.GetValueOrDefault(Int32.MaxValue))
                            {
                                meetsCriteria = true;
                            }
                        }
                    }
                }
            }
            return(meetsCriteria);
        }
        public SettingsDialogViewModel(IPreferenceService preferenceService)
        {
            PreferenceService = preferenceService;
            var preference = PreferenceService.Preference;

            RoundingRuleIndex.Value = (int)preference.Rounding;
            RoundUnit.Value         = preference.RoundUnit;
            StartMargin.Value       = preference.StartMargin;
            EndMargin.Value         = preference.EndMargin;

            FirstDayIndex.Value = (int)preference.FirstDayOfWeek;

            DayOffset.Value = (int)preference.DayOffsetMinutes;
            DayOffset.Subscribe(OnDayOffsetChanged);

            MaxDays.Value = preference.MaxDays;
            MaxDays.Subscribe(OnMaxDaysChanged);

            EnableBlackoutDates.Value = preference.EnableBlackoutDates;
            EnableBlackoutDates.Subscribe(OnEnableBlackoutDatesChanged);

            OkCommand = new DelegateCommand(OnOkCommand);
        }