private string Validate(SimpleWizardRule rule)
        {
            var validationResults = new List <ValidationResult>();
            var validationContext = new ValidationContext(rule, null, null);

            Validator.TryValidateObject(rule, validationContext, validationResults);
            rule.ValidationErrors.Clear();

            if (validationResults.Count > 0)
            {
                return(validationResults[0].ErrorMessage);
            }
            //else
            //{
            //    if (rule.RuleType == SimpleWizardRuleTypes.Regex)
            //    {
            //        try
            //        {
            //            new Regex(rule.Pattern);
            //        }
            //        catch(Exception excp)
            //        {
            //            return "The rule pattern was not recognised as a valid regular expression. " + excp.Message;
            //        }
            //    }
            //}

            return(null);
        }
        /// <summary>
        /// Sets the value of the rules properties based on the UI controls representing command parameters. The rule's command type
        /// dictates which input fields will be used for each command parameter.
        /// </summary>
        /// <returns>If there is an error parsing the rule parameters an error message otherwise null.</returns>
        private string SetRuleCommandFields(SimpleWizardRule rule)
        {
            if (rule.CommandType == SimpleWizardCommandTypes.Dial)
            {
                rule.CommandParameter1 = m_ruleCommandString.Text ?? "${EXTEN}";
                if (m_ruleProvider.SelectedValue == null || m_ruleProvider.SelectedValue as string == PLEASE_CHOOSE_OPTION)
                {
                    return("No provider was selected for the Dial command.");
                }
                else
                {
                    rule.CommandParameter2 = m_ruleProvider.SelectedValue as string;
                }
            }
            else if (rule.CommandType == SimpleWizardCommandTypes.DialAdvanced)
            {
                rule.CommandParameter1 = m_ruleAdvancedDialString.Text;
                rule.CommandParameter2 = m_ruleRingDuration.Text;
                rule.CommandParameter3 = m_ruleAnswerDuration.Text;
            }
            else if (rule.CommandType == SimpleWizardCommandTypes.Reject)
            {
                rule.CommandParameter1 = ((TextBlock)m_rejectResponseCode.SelectedValue).Text.Substring(0, 3);
                rule.CommandParameter2 = m_rejectReason.Text;
            }
            else if (rule.CommandType == SimpleWizardCommandTypes.HighriseLookup)
            {
                rule.CommandParameter1 = m_highriseURL.Text;
                rule.CommandParameter2 = m_highriseToken.Text;
                rule.CommandParameter3 = m_recordHighriseNote.IsChecked.ToString();
                rule.CommandParameter4 = m_asyncHighrise.IsChecked.ToString();
            }

            return(null);
        }
        /// <summary>
        /// Sets the command parameter properties on a rule based on the rule's command type. The rule's command type
        /// dictates which input fields will eb used for each command parameter.
        /// </summary>
        private string SetRuleCommandParameters(SimpleWizardRule rule)
        {
            if (rule.CommandType == SimpleWizardCommandTypes.Dial)
            {
                rule.CommandParameter1 = m_ruleCommandString.Text;
                if (m_ruleProvider.SelectedValue == null || ((SIPProvider)m_ruleProvider.SelectedValue).ProviderName == PLEASE_CHOOSE_OPTION)
                {
                    return("No provider was selected for the Dial command.");
                }
                else
                {
                    rule.CommandParameter2 = ((SIPProvider)m_ruleProvider.SelectedValue).ProviderName;
                }
            }
            else if (rule.CommandType == SimpleWizardCommandTypes.DialAdvanced)
            {
                rule.CommandParameter1 = m_ruleAdvancedDialString.Text;
                rule.CommandParameter2 = m_ruleRingDuration.Text;
                rule.CommandParameter3 = m_ruleAnswerDuration.Text;
            }
            else if (rule.CommandType == SimpleWizardCommandTypes.Reject)
            {
                rule.CommandParameter1 = ((TextBlock)m_rejectResponseCode.SelectedValue).Text.Substring(0, 3);
                rule.CommandParameter2 = m_rejectReason.Text;
            }

            return(null);
        }
 /// <summary>
 /// Sets the content of the UI controls representing command parameter fields based on the specified rule.
 /// The command parameters mean different things and apply to different controls dependent on the rule's command type.
 /// </summary>
 private void SetUICommandFieldsForRule(SimpleWizardRule rule)
 {
     if (rule.CommandType == SimpleWizardCommandTypes.Dial && m_ruleProvider.Items != null && m_ruleProvider.Items.Count > 0)
     {
         m_ruleCommandString.Text = rule.CommandParameter1;
         if (m_ruleProvider.Items.Any(x => x as string == rule.CommandParameter2))
         {
             // The second command parameter holds the provider.
             m_ruleProvider.SelectedIndex = m_ruleProvider.Items.IndexOf(m_ruleProvider.Items.Single(x => x as string == rule.CommandParameter2));
         }
     }
     else if (rule.CommandType == SimpleWizardCommandTypes.DialAdvanced)
     {
         m_ruleAdvancedDialString.Text = rule.CommandParameter1;
         m_ruleRingDuration.Text       = rule.CommandParameter2;
         m_ruleAnswerDuration.Text     = rule.CommandParameter3;
     }
     else if (rule.CommandType == SimpleWizardCommandTypes.Reject)
     {
         m_rejectResponseCode.SelectedIndex = m_rejectResponseCode.Items.IndexOf(m_rejectResponseCode.Items.Single(x => ((TextBlock)x).Text.StartsWith(rule.CommandParameter1)));
         m_rejectReason.Text = rule.CommandParameter2;
     }
     else if (rule.CommandType == SimpleWizardCommandTypes.HighriseLookup)
     {
         m_highriseURL.Text             = rule.CommandParameter1;
         m_highriseToken.Text           = rule.CommandParameter2;
         m_recordHighriseNote.IsChecked = (rule.CommandParameter3 != null) ? Convert.ToBoolean(rule.CommandParameter3) : false;
         m_asyncHighrise.IsChecked      = (rule.CommandParameter4 != null) ? Convert.ToBoolean(rule.CommandParameter4) : false;
     }
 }
Exemple #5
0
        public void TimePatternIncludedTimeTest()
        {
            SimpleWizardRule target = new SimpleWizardRule()
            {
                TimePattern = "MTuWThFSaSu;08:00-17:00"
            };

            var now = new DateTimeOffset(2011, 11, 23, 11, 28, 0, 0, TimeSpan.Zero);

            Assert.IsTrue(target.IsTimeMatch(now, null));
        }
Exemple #6
0
        public void TimePatternExcludeByStartTimeTest()
        {
            SimpleWizardRule target = new SimpleWizardRule()
            {
                TimePattern = "MTuWThFSaSu;08:00-23:59"
            };

            var now = new DateTimeOffset(2011, 11, 23, 7, 28, 0, 0, TimeSpan.Zero);

            Assert.IsFalse(target.IsTimeMatch(now, null));
        }
Exemple #7
0
        public void TimePatternAllDaysExceptWednesdayDayTest()
        {
            SimpleWizardRule target = new SimpleWizardRule()
            {
                TimePattern = "MTuThFSaSu;00:00-23:59"
            };

            // Wednesday.
            var now = new DateTimeOffset(2011, 11, 23, 14, 28, 0, 0, TimeSpan.Zero);

            Assert.IsFalse(target.IsTimeMatch(now, null));
        }
        private void DeleteSimpleWizardRule(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            SimpleWizardRule rule            = m_currentGrid.SelectedItem as SimpleWizardRule;
            string           ruleDescription = rule.Description.IsNullOrBlank() ? "priority " + rule.Priority.ToString() : rule.Description;

            if (MessageBox.Show("Confirm delete for rule " + ruleDescription, "Confirm delete", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                LogActivityMessage_External(MessageLevelsEnum.Info, "Deleting simple wizard rule for " + rule.Description + ".");
                m_riaContext.SimpleWizardRules.Remove(rule);
                m_riaContext.SubmitChanges(DeleteComplete, null);
            }
        }
Exemple #9
0
        public void TimePatternExcludedDayTest()
        {
            SimpleWizardRule target = new SimpleWizardRule()
            {
                TimePattern = "Tu"
            };

            // Sunday.
            var now = new DateTimeOffset(2011, 11, 27, 14, 28, 0, 0, TimeSpan.Zero);

            Assert.IsFalse(target.IsTimeMatch(now, null));
        }
Exemple #10
0
        public void TimePatternAllDaysIncludedDayTest()
        {
            SimpleWizardRule target = new SimpleWizardRule()
            {
                TimePattern = "MTuWThFSaSu;00:00-23:59"
            };

            // Sunday.
            var now = new DateTimeOffset(2011, 11, 27, 14, 28, 0, 0, TimeSpan.Zero);

            Assert.IsTrue(target.IsTimeMatch(now, null));
        }
Exemple #11
0
        public void DeleteSimpleWizardRule(SimpleWizardRule rule)
        {
            //if (rule.Owner != this.ServiceContext.User.Identity.Name)
            //{
            //    throw new ApplicationException("You are not authorised to update this record.");
            //}
            //else
            //{
            //    this.ObjectContext.SimpleWizardDialPlanRules.AttachAsModified(rule, this.ChangeSet.GetOriginal(rule));
            //}

            m_service.DeleteSimpleWizardRule(this.ServiceContext.User.Identity.Name, rule);
        }
        private void UpdateRule(SimpleWizardRule rule)
        {
            if (rule.Direction == SIPCallDirection.Out.ToString())
            {
                m_outgoingRulesUpdateControl.SetStatusMessage("Saving...", true);
            }
            else
            {
                m_incomingRulesUpdateControl.SetStatusMessage("Saving...", true);
            }

            m_riaContext.SubmitChanges(UpdateRuleComplete, rule);
        }
Exemple #13
0
        public void InsertSimpleWizardRule(SimpleWizardRule rule)
        {
            //rule.Owner = this.ServiceContext.User.Identity.Name;

            //if (rule.EntityState != EntityState.Detached)
            //{
            //    this.ObjectContext.ObjectStateManager.ChangeObjectState(rule, EntityState.Added);
            //}
            //else
            //{
            //    this.ObjectContext.SimpleWizardDialPlanRules.AddObject(rule);
            //}

            m_service.InsertSimpleWizardRule(this.ServiceContext.User.Identity.Name, rule);
        }
        /// <summary>
        /// Sets the UI elements based on the To match type and paramters.
        /// </summary>
        /// <param name="rule"></param>
        private void SetUIToMatchFields(SimpleWizardRule rule)
        {
            m_toMatchType.SelectedIndex = m_toMatchType.Items.IndexOf(m_toMatchType.Items.SingleOrDefault(x => ((TextBlock)x).Text == rule.ToMatchType));

            if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.ToSIPAccount)
            {
                m_ruleToAccount.SelectedIndex = m_ruleToAccount.Items.IndexOf(m_ruleToAccount.Items.SingleOrDefault(x => x.ToString() == rule.ToMatchParameter));
            }
            else if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.ToSIPProvider)
            {
                m_ruleToProvider.SelectedIndex = m_ruleToProvider.Items.IndexOf(m_ruleToProvider.Items.SingleOrDefault(x => x.ToString() == rule.ToMatchParameter));
            }
            else if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.Regex)
            {
                m_ruleToRegexText.Text = rule.ToMatchParameter;
            }
        }
        private void AddRule(SimpleWizardRule rule)
        {
            rule.ID         = Guid.NewGuid().ToString();
            rule.Owner      = m_owner;
            rule.DialPlanID = m_dialPlan.ID;

            m_riaContext.SimpleWizardRules.Add(rule);

            if (rule.Direction == SIPCallDirection.Out.ToString())
            {
                m_outgoingRulesUpdateControl.SetStatusMessage("Saving...", true);
            }
            else
            {
                m_incomingRulesUpdateControl.SetStatusMessage("Saving...", true);
            }

            m_riaContext.SubmitChanges(AddRuleComplete, rule);
        }
        /// <summary>
        /// Sets the To header match portions of the simple wizard rule based on the UI values.
        /// </summary>
        private string SetRuleToMatchFields(SimpleWizardRule rule)
        {
            if (m_toMatchType.SelectedValue == null)
            {
                return("A To matching choice must be specified.");
            }
            else
            {
                rule.ToMatchType = ((TextBlock)m_toMatchType.SelectedValue).Text;
            }

            if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.ToSIPAccount)
            {
                rule.ToMatchParameter = m_ruleToAccount.SelectedValue as string;
                if (rule.ToMatchParameter == null || rule.ToMatchParameter == PLEASE_CHOOSE_OPTION)
                {
                    return("A SIP account must be selected for the ToSIPAccount matching choice.");
                }
            }
            else if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.ToSIPProvider)
            {
                rule.ToMatchParameter = m_ruleToProvider.SelectedValue as string;
                if (rule.ToMatchParameter == null || rule.ToMatchParameter == PLEASE_CHOOSE_OPTION)
                {
                    return("A provider must be selected for the ToSIPProvider matching choice.");
                }
            }
            else if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.Regex)
            {
                rule.ToMatchParameter = m_ruleToRegexText.Text;
                if (rule.ToMatchParameter.IsNullOrBlank())
                {
                    return("A regular expression must be entered for the Regex matching choice.");
                }
            }
            else if (rule.SimpleWizardToMatchType == SimpleWizardToMatchTypes.Any)
            {
                rule.ToMatchParameter = null;
            }

            return(null);
        }
        private void RulesDataGridClicked(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            DataGrid dataGrid = (DataGrid)sender;

            if (dataGrid.CurrentColumn != null && dataGrid.CurrentColumn.Header as string != "Delete")
            {
                SimpleWizardRule rule = dataGrid.SelectedItem as SimpleWizardRule;
                if (rule != null)
                {
                    if (dataGrid == m_outgoingRulesDataGrid)
                    {
                        m_outgoingRulesUpdateControl.SetRuleToUpdate(rule);
                    }
                    else if (dataGrid == m_incomingRulesDataGrid)
                    {
                        m_incomingRulesUpdateControl.SetRuleToUpdate(rule);
                    }
                }
            }
        }
        /// <summary>
        /// Sets the UI fields based on the supplied rule. If the rule is null the fields are reset ready for a new rule to be added.
        /// </summary>
        public void SetRuleToUpdate(SimpleWizardRule rule)
        {
            if (rule != null)
            {
                m_ruleToUpdate = rule;
                SetStatusMessage(UPDATE_TEXT, false);

                m_rulePatternType.SelectedIndex = m_rulePatternType.Items.IndexOf(m_rulePatternType.Items.Single(x => ((TextBlock)x).Text == rule.PatternType));
                m_rulePattern.Text = rule.Pattern;
                m_ruleCommandType.SelectedIndex = m_ruleCommandType.Items.IndexOf(m_ruleCommandType.Items.Single(x => ((TextBlock)x).Text == rule.Command));
                m_ruleCommandString.Text        = rule.CommandParameter1;
                m_ruleDescription.Text          = rule.Description;
                m_rulePriority.Text             = rule.Priority.ToString();
                m_ruleIsDisabled.IsChecked      = rule.IsDisabled;

                SetCommandParameterFieldsForRule(rule);
            }
            else
            {
                m_ruleToUpdate = null;
                SetStatusMessage(ADD_TEXT, false);

                m_ruleIsDisabled.IsChecked      = false;
                m_rulePatternType.SelectedIndex = 0;
                m_rulePattern.Text                 = String.Empty;
                m_ruleCommandString.Text           = DEFAULT_DIAL_DESTINATION;
                m_ruleProvider.SelectedIndex       = 0;
                m_ruleDescription.Text             = String.Empty;
                m_rulePriority.Text                = DEFAULT_RULE_PRIORITY.ToString();
                m_ruleAdvancedDialString.Text      = String.Empty;
                m_ruleRingDuration.Text            = String.Empty;
                m_ruleAnswerDuration.Text          = String.Empty;
                m_rejectResponseCode.SelectedIndex = DEFAULT_REJECT_RESPONSE_INDEX;
                m_rejectReason.Text                = String.Empty;
                m_ruleCommandType.SelectedIndex    = 0;
                HideError.Begin();
            }
        }
 /// <summary>
 /// Sets the command parameter fields based on the specified rule. The command parameters mean different
 /// things and apply to different controls dependent on the rule's command type.
 /// </summary>
 private void SetCommandParameterFieldsForRule(SimpleWizardRule rule)
 {
     if (rule.CommandType == SimpleWizardCommandTypes.Dial && m_ruleProvider.Items != null && m_ruleProvider.Items.Count > 0)
     {
         m_ruleCommandString.Text = rule.CommandParameter1;
         if (m_ruleProvider.Items.Any(x => ((SIPProvider)x).ProviderName == rule.CommandParameter2))
         {
             // The second command parameter holds the provider.
             m_ruleProvider.SelectedIndex = m_ruleProvider.Items.IndexOf(m_ruleProvider.Items.Single(x => ((SIPProvider)x).ProviderName == rule.CommandParameter2));
         }
     }
     else if (rule.CommandType == SimpleWizardCommandTypes.DialAdvanced)
     {
         m_ruleAdvancedDialString.Text = rule.CommandParameter1;
         m_ruleRingDuration.Text       = rule.CommandParameter2;
         m_ruleAnswerDuration.Text     = rule.CommandParameter3;
     }
     else if (rule.CommandType == SimpleWizardCommandTypes.Reject)
     {
         m_rejectResponseCode.SelectedIndex = m_rejectResponseCode.Items.IndexOf(m_rejectResponseCode.Items.Single(x => ((TextBlock)x).Text.StartsWith(rule.CommandParameter1)));
         m_rejectReason.Text = rule.CommandParameter2;
     }
 }
        private void Submit(object sender, System.Windows.RoutedEventArgs e)
        {
            decimal priority = DEFAULT_RULE_PRIORITY;

            Decimal.TryParse(m_rulePriority.Text, out priority);

            if (m_ruleToUpdate == null)
            {
                SimpleWizardRule rule = new SimpleWizardRule()
                {
                    ID         = Guid.Empty.ToString(),     // Will be set in the manager.
                    Owner      = "None",                    // Will be set in the manager.
                    DialPlanID = Guid.Empty.ToString(),     // Will be set in the manager.
                    Direction  = SIPCallDirection.In.ToString(),
                    //ToSIPAccount = (m_ruleToSIPAccount.IsChecked.GetValueOrDefault()) ? m_ruleToAccount.SelectedValue as string : null,
                    //RuleTypeID = Enum.Parse(typeof(SimpleWizardRuleTypes), ((TextBlock)m_ruleType.SelectedValue).Text, true).GetHashCode(),
                    Pattern     = m_rulePattern.Text,
                    Command     = ((TextBlock)m_ruleCommandType.SelectedValue).Text,
                    Description = m_ruleDescription.Text,
                    Priority    = priority,
                    IsDisabled  = m_ruleIsDisabled.IsChecked.GetValueOrDefault()
                };

                string toFieldsError = SetRuleToMatchFields(rule);
                if (toFieldsError != null)
                {
                    SetErrorMessage(toFieldsError);
                    return;
                }

                string commandParameterError = SetRuleCommandFields(rule);
                if (commandParameterError != null)
                {
                    SetErrorMessage(commandParameterError);
                    return;
                }

                string timePatternError = GetTimePattern(rule);
                if (timePatternError != null)
                {
                    SetErrorMessage(timePatternError);
                    return;
                }

                string validationError = Validate(rule);
                if (validationError != null)
                {
                    SetErrorMessage(validationError);
                }
                else
                {
                    HideErrorSB.Begin();
                    Add(rule);
                }
            }
            else
            {
                //m_ruleToUpdate.ToSIPAccount = (m_ruleToSIPAccount.IsChecked.GetValueOrDefault()) ? m_ruleToAccount.SelectedValue as string : null;
                //m_ruleToUpdate.RuleTypeID = Enum.Parse(typeof(SimpleWizardRuleTypes), ((TextBlock)m_ruleType.SelectedValue).Text, true).GetHashCode();
                m_ruleToUpdate.Pattern     = m_rulePattern.Text;
                m_ruleToUpdate.Command     = ((TextBlock)m_ruleCommandType.SelectedValue).Text;
                m_ruleToUpdate.Description = m_ruleDescription.Text;
                m_ruleToUpdate.Priority    = priority;
                m_ruleToUpdate.IsDisabled  = m_ruleIsDisabled.IsChecked.GetValueOrDefault();

                string toFieldsError = SetRuleToMatchFields(m_ruleToUpdate);
                if (toFieldsError != null)
                {
                    SetErrorMessage(toFieldsError);
                    return;
                }

                string commandParameterError = SetRuleCommandFields(m_ruleToUpdate);
                if (commandParameterError != null)
                {
                    SetErrorMessage(commandParameterError);
                    return;
                }

                string timePatternError = GetTimePattern(m_ruleToUpdate);
                if (timePatternError != null)
                {
                    SetErrorMessage(timePatternError);
                    return;
                }

                string validationError = Validate(m_ruleToUpdate);
                if (validationError != null)
                {
                    SetErrorMessage(validationError);
                }
                else
                {
                    HideErrorSB.Begin();
                    Update(m_ruleToUpdate);
                }
            }
        }
        private void Submit(object sender, System.Windows.RoutedEventArgs e)
        {
            decimal priority = DEFAULT_RULE_PRIORITY;

            Decimal.TryParse(m_rulePriority.Text, out priority);

            if (m_ruleToUpdate == null)
            {
                SimpleWizardRule rule = new SimpleWizardRule()
                {
                    ID          = Guid.Empty.ToString(),    // Will be set in the manager.
                    Owner       = "None",                   // Will be set in the manager.
                    DialPlanID  = Guid.Empty.ToString(),    // Will be set in the manager.
                    Direction   = SIPCallDirection.Out.ToString(),
                    PatternType = ((TextBlock)m_rulePatternType.SelectedValue).Text,
                    Pattern     = m_rulePattern.Text,
                    Command     = ((TextBlock)m_ruleCommandType.SelectedValue).Text,
                    Description = m_ruleDescription.Text,
                    Priority    = priority,
                    IsDisabled  = m_ruleIsDisabled.IsChecked.GetValueOrDefault()
                };

                string commandParameterError = SetRuleCommandParameters(rule);
                if (commandParameterError != null)
                {
                    SetErrorMessage(commandParameterError);
                }
                else if (rule.Pattern.IsNullOrBlank())
                {
                    SetErrorMessage("A pattern must be specified to match the outgoing call.");
                }
                else
                {
                    HideError.Begin();
                    Add(rule);
                }
            }
            else
            {
                m_ruleToUpdate.IsDisabled  = m_ruleIsDisabled.IsChecked.GetValueOrDefault();
                m_ruleToUpdate.PatternType = ((TextBlock)m_rulePatternType.SelectedValue).Text;
                m_ruleToUpdate.Pattern     = m_rulePattern.Text;
                m_ruleToUpdate.Command     = ((TextBlock)m_ruleCommandType.SelectedValue).Text;
                m_ruleToUpdate.Description = m_ruleDescription.Text;
                m_ruleToUpdate.Priority    = priority;

                string commandParameterError = SetRuleCommandParameters(m_ruleToUpdate);
                if (commandParameterError != null)
                {
                    SetErrorMessage(commandParameterError);
                }
                else if (m_ruleToUpdate.Pattern.IsNullOrBlank())
                {
                    SetErrorMessage("A pattern must be specified to match the outgoing call.");
                }
                else
                {
                    HideError.Begin();
                    Update(m_ruleToUpdate);
                }
            }
        }
        /// <summary>
        /// Extracts the time pattern from the UI controls that represent a rule that's being applied for a specific time.
        /// </summary>
        /// <returns>A string describing the time pattern.</returns>
        private string GetTimePattern(SimpleWizardRule rule)
        {
            if (!m_ruleWhenSpecificTimes.IsChecked.GetValueOrDefault())
            {
                rule.TimePattern = null;
                return(null);
            }
            else
            {
                string timePattern = null;
                timePattern += (m_monCheckbox.IsChecked.GetValueOrDefault()) ? "M" : null;
                timePattern += (m_tueCheckbox.IsChecked.GetValueOrDefault()) ? "Tu" : null;
                timePattern += (m_wedCheckbox.IsChecked.GetValueOrDefault()) ? "W" : null;
                timePattern += (m_thuCheckbox.IsChecked.GetValueOrDefault()) ? "Th" : null;
                timePattern += (m_friCheckbox.IsChecked.GetValueOrDefault()) ? "F" : null;
                timePattern += (m_satCheckbox.IsChecked.GetValueOrDefault()) ? "Sa" : null;
                timePattern += (m_sunCheckbox.IsChecked.GetValueOrDefault()) ? "Su" : null;

                if (timePattern == null)
                {
                    return("At least one day must be checked for a rule using a specific time.");
                }
                else
                {
                    int startTimeHour = 0;
                    int startTimeMin  = 0;
                    int endTimeHour   = 0;
                    int endTimeMin    = 0;

                    if (!Int32.TryParse(m_startTimeHour.Text, out startTimeHour))
                    {
                        return("The start time hour was invalid. Please make sure it contains only numbers.");
                    }
                    if (!Int32.TryParse(m_startTimeMin.Text, out startTimeMin))
                    {
                        return("The start time minute was invalid. Please make sure it contains only numbers.");
                    }
                    if (!Int32.TryParse(m_endTimeHour.Text, out endTimeHour))
                    {
                        return("The end time hour was invalid. Please make sure it contains only numbers.");
                    }
                    if (!Int32.TryParse(m_endTimeMin.Text, out endTimeMin))
                    {
                        return("The end time minute was invalid. Please make sure it contains only numbers.");
                    }

                    if (startTimeHour < 0 || startTimeHour > 23)
                    {
                        return("The start time hour was invalid. Please make sure it is between 0 and 23.");
                    }
                    else if (startTimeMin < 0 || startTimeMin > 59)
                    {
                        return("The start time minute was invalid. Please make sure it is between 0 and 59.");
                    }
                    if (endTimeHour < 0 || endTimeHour > 23)
                    {
                        return("The end time hour was invalid. Please make sure it is between 0 and 23.");
                    }
                    else if (endTimeMin < 0 || endTimeMin > 59)
                    {
                        return("The end time minute was invalid. Please make sure it is between 0 and 59.");
                    }
                    else if ((startTimeHour * 60 + startTimeMin) >= (endTimeHour * 60 + endTimeMin))
                    {
                        return("The start time must be less than the end time.");
                    }

                    rule.TimePattern = timePattern + ";" + startTimeHour.ToString("D2") + ":" + startTimeMin.ToString("D2") + "-" + endTimeHour.ToString("D2") + ":" + endTimeMin.ToString("D2");

                    return(null);
                }
            }
        }
        public void SetRuleToUpdate(SimpleWizardRule rule)
        {
            if (rule != null)
            {
                m_ruleToUpdate = rule;
                SetStatusMessage(UPDATE_TEXT, false);

                SetUIToMatchFields(rule);

                m_rulePattern.Text = rule.Pattern;
                m_ruleCommandType.SelectedIndex = m_ruleCommandType.Items.IndexOf(m_ruleCommandType.Items.Single(x => ((TextBlock)x).Text == rule.Command));
                m_ruleDescription.Text          = rule.Description;
                m_rulePriority.Text             = rule.Priority.ToString();
                m_ruleIsDisabled.IsChecked      = rule.IsDisabled;

                if (rule.TimePattern != null)
                {
                    m_ruleWhenSpecificTimes.IsChecked = true;
                    var matchedDays = rule.MatchedDays();
                    m_monCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Monday);
                    m_tueCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Tuesday);
                    m_wedCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Wednesday);
                    m_thuCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Thursday);
                    m_friCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Friday);
                    m_satCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Saturday);
                    m_sunCheckbox.IsChecked = matchedDays.Contains(DayOfWeek.Sunday);
                    m_startTimeHour.Text    = rule.GetStartHour().ToString();
                    m_startTimeMin.Text     = rule.GetStartMinute().ToString();
                    m_endTimeHour.Text      = rule.GetEndHour().ToString();
                    m_endTimeMin.Text       = rule.GetEndMinute().ToString();
                }
                else
                {
                    m_ruleWhenAnytime.IsChecked = true;
                }

                SetUICommandFieldsForRule(rule);
            }
            else
            {
                m_ruleToUpdate = null;
                SetStatusMessage(ADD_TEXT, false);

                //m_ruleToSIPAccount.IsChecked = false;
                //m_ruleToChoiceAny.IsChecked = true;
                m_ruleIsDisabled.IsChecked         = false;
                m_toMatchType.SelectedIndex        = 0;
                m_ruleToAccount.SelectedIndex      = 0;
                m_ruleToProvider.SelectedIndex     = 0;
                m_ruleToRegexText.Text             = String.Empty;
                m_rulePattern.Text                 = String.Empty;
                m_ruleCommandType.SelectedIndex    = 0;
                m_ruleCommandString.Text           = DEFAULT_DIAL_DESTINATION;
                m_ruleProvider.SelectedIndex       = 0;
                m_ruleDescription.Text             = String.Empty;
                m_rulePriority.Text                = DEFAULT_RULE_PRIORITY.ToString();
                m_ruleAdvancedDialString.Text      = String.Empty;
                m_ruleRingDuration.Text            = String.Empty;
                m_ruleAnswerDuration.Text          = String.Empty;
                m_rejectResponseCode.SelectedIndex = DEFAULT_REJECT_RESPONSE_INDEX;
                m_rejectReason.Text                = String.Empty;
                m_highriseURL.Text                 = String.Empty;
                m_highriseToken.Text               = String.Empty;

                m_ruleCommandString.Text = "${EXTEN}";

                m_ruleWhenAnytime.IsChecked       = true;
                m_ruleWhenSpecificTimes.IsChecked = false;
                m_monCheckbox.IsChecked           = true;
                m_tueCheckbox.IsChecked           = true;
                m_wedCheckbox.IsChecked           = true;
                m_thuCheckbox.IsChecked           = true;
                m_friCheckbox.IsChecked           = true;
                m_satCheckbox.IsChecked           = true;
                m_sunCheckbox.IsChecked           = true;
                m_startTimeHour.Text = "00";
                m_startTimeMin.Text  = "00";
                m_endTimeHour.Text   = "23";
                m_endTimeMin.Text    = "59";

                HideErrorSB.Begin();
            }
        }
Exemple #24
0
        public void SimpleWizardRuleConstructorTest()
        {
            SimpleWizardRule target = new SimpleWizardRule();

            Assert.IsNotNull(target);
        }