Beispiel #1
0
        public void LoadData(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, CallButlerDataset.ExtensionsRow extension, CallButlerDataset.ExtensionContactNumbersDataTable extensionContactTable)
        {
            this.extensions       = extensions;
            this.extension        = extension;
            ExtensionContactTable = extensionContactTable;

            pnlFlow.Controls.Clear();

            // Create our voicemail shape
            VoicemailDiagramShape vds = new VoicemailDiagramShape();

            vds.Dock = DockStyle.Top;
            pnlFlow.Controls.Add(vds);

            WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow[] contactRows = (WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow[])ExtensionContactTable.Select("ExtensionID = '" + extension.ExtensionID + "'", "Priority ASC");

            foreach (WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactRow in contactRows)
            {
                AddContactControl(extensions, contactRow, false);
            }

            cbCallBlast.Checked = extension.UseCallBlast;

            UpdateCallBlast();
        }
Beispiel #2
0
        private void btnHeadStart_Click(object sender, EventArgs e)
        {
            Forms.PrebuiltConfigForm pbForm = new CallButler.Manager.Forms.PrebuiltConfigForm();

            if (pbForm.ShowDialog(this) == DialogResult.OK)
            {
                WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions = new WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable();
                extensions.Merge(pbForm.ConfigurationData.Extensions);
                ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensions);

                WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable contactNumbers = new WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable();
                contactNumbers.Merge(pbForm.ConfigurationData.ExtensionContactNumbers);
                ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, contactNumbers);

                ManagementInterfaceClient.ManagementInterface.PersistDepartment(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.Departments);

                WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable lgTable = new WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable();

                // Persist our greeting sounds
                foreach (WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow lgRow in pbForm.ConfigurationData.LocalizedGreetings)
                {
                    lgTable.Clear();
                    lgTable.ImportRow(lgRow);
                    ManagementInterfaceClient.ManagementInterface.PersistLocalizedGreeting(ManagementInterfaceClient.AuthInfo, lgTable);
                    Utils.GreetingUtils.PersistLocalizedGreetingSound(lgRow);
                }

                ManagementInterfaceClient.ManagementInterface.PersistPersonalizedGreeting(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.PersonalizedGreetings);
                ManagementInterfaceClient.ManagementInterface.PersistProviders(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.Providers);
                ManagementInterfaceClient.ManagementInterface.PersistScriptSchedule(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.ScriptSchedules);

                // Send us back to the try it now page
                Wizard.NextTo(pgTest);
            }
        }
Beispiel #3
0
        private void AddContactControl(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactRow, bool scrollIntoView)
        {
            // Create our contact number shape
            FindMeNumberDiagramShape fmd = new FindMeNumberDiagramShape(extensions, contactRow);

            fmd.Dock              = DockStyle.Top;
            fmd.NumberType        = numberType;
            fmd.UsingCallBlast    = cbCallBlast.Checked;
            fmd.EnableCallIPPhone = enableCallIPPhone;
            fmd.Visible           = false;

            fmd.DeletePressed   += new EventHandler(fmd_DeletePressed);
            fmd.MoveDownPressed += new EventHandler(fmd_MoveDownPressed);
            fmd.MoveUpPressed   += new EventHandler(fmd_MoveUpPressed);
            fmd.SizeChanged     += new EventHandler(fmd_SizeChanged);

            pnlFlow.Controls.Add(fmd);
            pnlFlow.Controls.SetChildIndex(fmd, 1);

            fmd.Visible = true;

            if (scrollIntoView)
            {
                fmd.Expanded = true;
                //pnlFlow.ScrollControlIntoView(fmd);
                //pnlFlow.AutoScrollPosition = new Point(pnlFlow.AutoScrollPosition.X, fmd.Top);
            }
        }
        private void EditExtension(WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension)
        {
            short currentExt = extension.ExtensionNumber;

            // Get our extension contact numbers
            WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable contactNumbersTable = ManagementInterfaceClient.ManagementInterface.GetExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, extension.ExtensionID);

            // Get our extension greeting
            WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable voicemailGreetings = ManagementInterfaceClient.ManagementInterface.GetLocalizedGreeting(ManagementInterfaceClient.AuthInfo, extension.ExtensionID, ManagementInterfaceClient.ManagementInterface.GetDefaultLanguage(ManagementInterfaceClient.AuthInfo));
            WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow       voicemailGreeting  = null;

            if (voicemailGreetings.Count > 0)
            {
                voicemailGreeting = voicemailGreetings[0];

                // Download our greeting sound if it exists
                Utils.GreetingUtils.GetLocalizedGreetingSound(voicemailGreeting);
            }
            else
            {
                // If the greeting doesn't exist, create a new one
                voicemailGreeting                     = voicemailGreetings.NewLocalizedGreetingsRow();
                voicemailGreeting.GreetingID          = extension.ExtensionID;
                voicemailGreeting.LocalizedGreetingID = Guid.NewGuid();
                voicemailGreeting.LanguageID          = ManagementInterfaceClient.ManagementInterface.GetDefaultLanguage(ManagementInterfaceClient.AuthInfo);
                voicemailGreeting.Type                = (short)WOSI.CallButler.Data.GreetingType.SoundGreeting;
                voicemailGreetings.AddLocalizedGreetingsRow(voicemailGreeting);
            }

            WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable origExt = (WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable)callButlerDataset.Extensions.Copy();


            // Show our extension editor form
            Forms.ExtensionEditorForm extensionForm = new CallButler.Manager.Forms.ExtensionEditorForm(callButlerDataset.Extensions, extension, contactNumbersTable, voicemailGreeting);

            if (extensionForm.ShowDialog(this) == DialogResult.OK)
            {
                // Check to make sure the extension isn't already taken
                if (currentExt != extension.ExtensionNumber && origExt.Select("ExtensionNumber = " + extension.ExtensionNumber).Length > 0)
                {
                    MessageBox.Show(this, String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.ExtensionView_ExtTaken), extension.ExtensionNumber, currentExt), CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.ExtensionView_ExtConflict), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    extension.ExtensionNumber = currentExt;
                }

                // Edit our remote extension
                WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensionDataTable = Utils.TableUtils <WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable> .CreateTableFromRow(extension);

                ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensionDataTable);

                // Edit our remote greeting
                ManagementInterfaceClient.ManagementInterface.PersistLocalizedGreeting(ManagementInterfaceClient.AuthInfo, voicemailGreetings);

                // Send our voicemail greeting sound file
                Utils.GreetingUtils.PersistLocalizedGreetingSound(voicemailGreeting);

                ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, contactNumbersTable);
            }
        }
        public WOSI.CallButler.Data.CallButlerPhoneStatusDataset GetPhoneStatus()
        {
            WOSI.CallButler.Data.CallButlerPhoneStatusDataset psData = new WOSI.CallButler.Data.CallButlerPhoneStatusDataset();

            WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions = dataProvider.GetExtensions(Properties.Settings.Default.CustomerID);

            // Loop through each extension and get a status for it
            foreach (WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension in extensions)
            {
                WOSI.CallButler.Data.CallButlerPhoneStatusDataset.PhoneStatusRow statusRow = psData.PhoneStatus.NewPhoneStatusRow();
                PBXPresenceInfo[] presenceInfo = GetPresenceInfoForExtension(extension.ExtensionNumber);

                statusRow.ExtensionID     = extension.ExtensionID;
                statusRow.ExtensionNumber = extension.ExtensionNumber;
                statusRow.FirstName       = extension.FirstName;
                statusRow.LastName        = extension.LastName;
                statusRow.StatusCode      = (int)WOSI.CallButler.Data.PhoneExtensionStatus.Offline;

                if (presenceInfo != null && presenceInfo.Length > 0)
                {
                    foreach (PBXPresenceInfo tmpPInfo in presenceInfo)
                    {
                        if (tmpPInfo.Status != PBXPresenceStatus.Offline)
                        {
                            statusRow.StatusCode     = (int)WOSI.CallButler.Data.PhoneExtensionStatus.Online;
                            statusRow.RemoteAddress += tmpPInfo.RemoteAddress + " ";

                            break;
                        }
                    }

                    statusRow.RemoteAddress = statusRow.RemoteAddress.Trim();
                }

                psData.PhoneStatus.AddPhoneStatusRow(statusRow);
            }

            return(psData);
        }
Beispiel #6
0
        protected override void OnExternalCommand(string command, string commandData, string eventToken, TelecomScriptInterface tsInterface, CallButler.Telecom.TelecomProviderBase telecomProvider, WOSI.CallButler.Data.DataProviders.CallButlerDataProviderBase dataProvider)
        {
            // Parse out our external event action
            if (Enum.IsDefined(typeof(StandardExternalCommands), command))
            {
                StandardExternalCommands externalCommand = WOSI.Utilities.EnumUtils <StandardExternalCommands> .Parse(command);

                switch (externalCommand)
                {
                case StandardExternalCommands.CALLBUTLERINTERNAL_ChooseLanguage:
                {
                    if (!Properties.Settings.Default.Multilingual)
                    {
                        tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_NotMultilingual.ToString());
                    }
                    else
                    {
                        tsInterface.IMLInterpreter.SignalEventCallback(eventToken);
                    }
                    break;
                }

                case StandardExternalCommands.CALLBUTLERINTERNAL_SetLanguageID:
                {
                    List <string> languages = new List <string>();
                    languages.Add(Properties.Settings.Default.DefaultLanguage);
                    languages.AddRange(Properties.Settings.Default.Languages.Split(';'));

                    int languageNumber = Convert.ToInt32(commandData);

                    if (languageNumber > 0 && languageNumber <= languages.Count)
                    {
                        // Set our language ID variable
                        tsInterface.IMLInterpreter.SetLocalVariable("LanguageID", languages[languageNumber - 1]);
                        tsInterface.IMLInterpreter.SignalEventCallback(eventToken);
                    }
                    else
                    {
                        tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_InvalidLanguage.ToString());
                    }

                    break;
                }

                case StandardExternalCommands.CALLBUTLERINTERNAL_ProcessMainMenuOption:
                {
                    WOSI.CallButler.Data.CallButlerDataset.DepartmentsDataTable departments = dataProvider.GetDepartments(Properties.Settings.Default.CustomerID);

                    WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow[] choosenDepartments = (WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow[])departments.Select("OptionNumber = " + commandData);

                    if (choosenDepartments.Length > 0)
                    {
                        WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow choosenDepartment = choosenDepartments[0];

                        switch (choosenDepartment.Type)
                        {
                        case (short)WOSI.CallButler.Data.DepartmentTypes.Greeting:
                            tsInterface.IMLInterpreter.SetLocalVariable("MainMenuOptionGreetingID", choosenDepartment.DepartmentID.ToString());
                            tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_GreetingMenuOption.ToString());
                            break;

                        case (short)WOSI.CallButler.Data.DepartmentTypes.Extension:

                            // Find our extension number
                            try
                            {
                                WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = dataProvider.GetExtension(Properties.Settings.Default.CustomerID, new Guid(choosenDepartment.Data1));

                                if (extension != null)
                                {
                                    tsInterface.IMLInterpreter.SetLocalVariable("Extension", extension.ExtensionNumber.ToString());
                                }
                            }
                            catch
                            {
                            }

                            tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_ExtensionMenuOption.ToString());
                            break;

                        case (short)WOSI.CallButler.Data.DepartmentTypes.Script:
                            tsInterface.IMLInterpreter.SetLocalVariable("CustomScriptPath", choosenDepartment.Data1);
                            tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_ScriptMenuOption.ToString());

                            break;

                        case (short)WOSI.CallButler.Data.DepartmentTypes.Number:
                            tsInterface.IMLInterpreter.SetLocalVariable("TransferToNumber", choosenDepartment.Data1);
                            tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_NumberTransferMenuOption.ToString());

                            break;

                        case (short)WOSI.CallButler.Data.DepartmentTypes.Module:
                            tsInterface.IMLInterpreter.SetLocalVariable("AddonModuleID", choosenDepartment.Data1);
                            tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_AddonModuleMenuOption.ToString());

                            break;
                        }
                    }
                    else
                    {
                        tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_InvalidMenuOption.ToString());
                    }

                    break;
                }

                case StandardExternalCommands.CALLBUTLERINTERNAL_DialByNameSearch:

                    // Find our extensions for this search string
                    WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions = dataProvider.GetExtensions(Properties.Settings.Default.CustomerID);

                    WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow[] matchingExtensions = (WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow[])extensions.Select("SearchNumber LIKE '" + commandData + "*' AND EnableSearch = True");

                    // Get our extension search index
                    int searchIndex = Convert.ToInt32(tsInterface.IMLInterpreter.GetLocalVariable("ExtensionSearchIndex"));
                    searchIndex++;

                    if (matchingExtensions.Length > 0 && searchIndex < matchingExtensions.Length)
                    {
                        tsInterface.IMLInterpreter.SetLocalVariable("Extension", matchingExtensions[searchIndex].ExtensionNumber.ToString());
                        tsInterface.IMLInterpreter.SetLocalVariable("ExtensionName", matchingExtensions[searchIndex].FirstName + " " + matchingExtensions[searchIndex].LastName);
                        tsInterface.IMLInterpreter.SetLocalVariable("ExtensionSearchIndex", searchIndex.ToString());
                    }
                    else
                    {
                        tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_ExtensionNotFound.ToString());
                    }

                    tsInterface.IMLInterpreter.SignalEventCallback(eventToken);

                    break;

                case StandardExternalCommands.CALLBUTLERINTERNAL_VoicemailManagement:
                {
                    try
                    {
                        WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = dataProvider.GetExtensionNumber(Properties.Settings.Default.CustomerID, Convert.ToInt32(tsInterface.IMLInterpreter.GetLocalVariable("Extension")));

                        if (extension != null)
                        {
                            tsInterface.ScriptProcessor = new VoicemailManagementScriptProcessor(extension, pbxRegistrar);
                            tsInterface.ScriptProcessor.StartProcessing(tsInterface, telecomProvider, dataProvider);

                            break;
                        }
                    }
                    catch
                    {
                    }

                    tsInterface.IMLInterpreter.SignalTransferFailure();

                    break;
                }

                    /*case StandardExternalCommands.CALLBUTLERINTERNAL_StartAddonModule:
                     *  {
                     *      CallButler.Service.Plugin.CallButlerAddonModulePlugin[] addonModules = pluginManager.GetAllPluginsOfType<CallButler.Service.Plugin.CallButlerAddonModulePlugin>();
                     *
                     *      foreach (CallButler.Service.Plugin.CallButlerAddonModulePlugin addonModule in addonModules)
                     *      {
                     *          if (addonModule.PluginID.ToString() == commandData)
                     *          {
                     *              try
                     *              {
                     *                  // Make sure the module is licensed
                     *                  if (!addonModule.IsLicensed)
                     *                      break;
                     *
                     *                  // We found our module and we should load the script it uses
                     *                  tsInterface.ScriptProcessor = new AddonModuleScriptProcessor(addonModule);
                     *                  tsInterface.ScriptProcessor.StartProcessing(tsInterface, telecomProvider, dataProvider);
                     *                  return;
                     *
                     *              }
                     *              catch (Exception e)
                     *              {
                     *                  LoggingService.AddLogEntry(WOSI.CallButler.ManagementInterface.LogLevel.ErrorsOnly, "Failed to load Addon-Module '" + addonModule.PluginName + "'\r\n\r\n" + e.Message + "\r\n\r\n" + e.StackTrace, true);
                     *              }
                     *          }
                     *      }
                     *
                     *      tsInterface.ScriptProcessor = this;
                     *      tsInterface.IMLInterpreter.SignalExternalEvent(StandardExternalEvents.CALLBUTLERINTERNAL_AddonModuleFailed.ToString());
                     *
                     *      break;
                     *  }*/
                }
            }
        }
        internal void AddNewExtension()
        {
            // Check to make sure we can add a new extension
            int maxExtensions = 100;

            if (maxExtensions > 0 && maxExtensions <= callButlerDataset.Extensions.Count)
            {
                MessageBox.Show(this, String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.ExtensionsView_ExtLimit), maxExtensions), CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_PermissionDenied), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // Create a new Extension row
            WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = callButlerDataset.Extensions.NewExtensionsRow();

            extension.CustomerID  = Properties.Settings.Default.CustomerID;
            extension.ExtensionID = Guid.NewGuid();
            short extensionNum = 0;

            // Find us an unused extension number
            for (short index = Properties.Settings.Default.MinExtensionNumber; index < short.MaxValue; index++)
            {
                if (callButlerDataset.Extensions.Select("ExtensionNumber = " + index).Length == 0)
                {
                    extensionNum = index;
                    extension.ExtensionNumber = index;
                    break;
                }
            }

            // Create a new voicemail greeting
            WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable voicemailGreetingTable = new WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable();
            WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow       voicemailGreeting      = voicemailGreetingTable.NewLocalizedGreetingsRow();
            voicemailGreeting.GreetingID          = extension.ExtensionID;
            voicemailGreeting.LocalizedGreetingID = Guid.NewGuid();
            voicemailGreeting.LanguageID          = ManagementInterfaceClient.ManagementInterface.GetDefaultLanguage(ManagementInterfaceClient.AuthInfo);
            voicemailGreeting.Type = (short)WOSI.CallButler.Data.GreetingType.SoundGreeting;
            voicemailGreetingTable.AddLocalizedGreetingsRow(voicemailGreeting);

            // Create a new extension contact numbers table
            WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable extensionContactNumbers = new WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable();

            // Show our extension editor form
            Forms.ExtensionEditorForm extensionForm = new CallButler.Manager.Forms.ExtensionEditorForm(callButlerDataset.Extensions, extension, extensionContactNumbers, voicemailGreeting);

            WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable origExt = (WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable)callButlerDataset.Extensions.Copy();

            if (extensionForm.ShowDialog(this) == DialogResult.OK)
            {
                // Check to make sure the extension isn't already taken
                if (origExt.Select("ExtensionNumber = " + extension.ExtensionNumber).Length > 0)
                {
                    MessageBox.Show(this, String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.ExtensionView_ExtTaken), extension.ExtensionNumber, extensionNum), CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.ExtensionView_ExtConflict), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    extension.ExtensionNumber = extensionNum;
                }

                // Add our local extension
                callButlerDataset.Extensions.AddExtensionsRow(extension);

                // Add our remote extension
                WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensionDataTable = Utils.TableUtils <WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable> .CreateTableFromRow(extension);

                ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensionDataTable);

                // Add our voicemail greeting
                ManagementInterfaceClient.ManagementInterface.PersistLocalizedGreeting(ManagementInterfaceClient.AuthInfo, voicemailGreetingTable);

                // Send our voicemail greeting sound file
                Utils.GreetingUtils.PersistLocalizedGreetingSound(voicemailGreeting);

                // Persist our contact numbers
                ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, extensionContactNumbers);
            }
        }
        public ExtensionEditorForm(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension, WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable extensionContacts, WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow voicemailGreeting)
        {
            InitializeComponent();

            this.extensions = extensions;
            this.extension = extension;
            this.extensionContacts = extensionContacts;

               CallButler.Manager.Plugin.CallButlerManagementPlugin plugin = PluginManager.GetPluginFromID(new Guid(Properties.Settings.Default.DefaultFindMePluginID));

               if (plugin != null)
               {
               CallButler.Manager.Plugin.CallButlerManagementPluginViewControl c = plugin.GetNewViewControl();
               c.Load(new object[] { extension, extensionContacts, ManagementInterfaceClient.ManagementInterface.TelephoneNumberDescription, true, true, extensions });
               c.Dock = DockStyle.Fill;
               pnlFindMe.Controls.Add(c);
               }
               else
               {
               NoPluginFoundView c = new NoPluginFoundView();
               c.PluginType = "Find me/Follow me plugin";

               c.Dock = DockStyle.Fill;
               pnlFindMe.Controls.Add(c);
               }

            wizard.PageIndex = 0;

            // Update our UI
            numExtNum.Value = extension.ExtensionNumber;
            txtFirstName.Text = extension.FirstName;
            txtLastName.Text = extension.LastName;
            cbEnableSearch.Checked = extension.EnableSearch;
            cbEnableManagement.Checked = extension.EnableManagement;
            cbEmailNotification.Checked = extension.EmailNotification;
            cbAttach.Checked = extension.EmailAttachment;
            txtEmailAddress.Text = extension.EmailAddress;
            cbCallScreening.Checked = extension.EnableCallScreening;
            cbEnableOutbound.Checked = extension.EnableOutboundCalls;

            if (!extension.IsUseConferenceTransferNull())
                cbHandOff.Checked = !extension.UseConferenceTransfer;
            else
                cbHandOff.Checked = true;

            greetingControl.LoadGreeting(voicemailGreeting, WOSI.Utilities.FileUtils.GetApplicationRelativePath(Properties.Settings.Default.GreetingsSoundCache));

            if (!extension.IsPasswordNull() && extension.Password.Length > 0)
            {
                txtPassword.Text = blankPassword;
                txtConfirmPassword.Text = blankPassword;
            }

            if (!extension.IsPBXPasswordNull() && extension.PBXPassword.Length > 0)
            {
                txtPBXPassword.Text = blankPassword;
                txtConfirmPBXPassword.Text = blankPassword;
            }

            txtFirstName.Select();

            btnImportOutlook.Enabled = Utilities.ContactManagement.ContactManagerFactory.CreateContactManager(Utilities.ContactManagement.ContactType.Outlook).IsInstalled;

            loading = false;
            greetingControl.LoadVoices(ManagementInterfaceClient.ManagementInterface.GetTTSVoices());

            pgFindme.Enabled = true;
            pnlHandoff.Visible = true;
            pnlPBXPassword.Visible = true;

            Utils.PrivateLabelUtils.ReplaceProductNameControl(this);
        }
        public void LoadData(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, CallButlerDataset.ExtensionsRow extension, CallButlerDataset.ExtensionContactNumbersDataTable extensionContactTable)
        {
            this.extensions = extensions;
            this.extension = extension;
            ExtensionContactTable = extensionContactTable;

            pnlFlow.Controls.Clear();

            // Create our voicemail shape
            VoicemailDiagramShape vds = new VoicemailDiagramShape();
            vds.Dock = DockStyle.Top;
            pnlFlow.Controls.Add(vds);

            WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow[] contactRows = (WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow[])ExtensionContactTable.Select("ExtensionID = '" + extension.ExtensionID + "'", "Priority ASC");

            foreach (WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactRow in contactRows)
            {
                AddContactControl(extensions, contactRow, false);
            }

            cbCallBlast.Checked = extension.UseCallBlast;

            UpdateCallBlast();
        }
        public ExtensionEditorForm(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension, WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable extensionContacts, WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow voicemailGreeting)
        {
            InitializeComponent();

            this.extensions        = extensions;
            this.extension         = extension;
            this.extensionContacts = extensionContacts;


            CallButler.Manager.Plugin.CallButlerManagementPlugin plugin = PluginManager.GetPluginFromID(new Guid(Properties.Settings.Default.DefaultFindMePluginID));

            if (plugin != null)
            {
                CallButler.Manager.Plugin.CallButlerManagementPluginViewControl c = plugin.GetNewViewControl();
                c.Load(new object[] { extension, extensionContacts, ManagementInterfaceClient.ManagementInterface.TelephoneNumberDescription, true, true, extensions });
                c.Dock = DockStyle.Fill;
                pnlFindMe.Controls.Add(c);
            }
            else
            {
                NoPluginFoundView c = new NoPluginFoundView();
                c.PluginType = "Find me/Follow me plugin";

                c.Dock = DockStyle.Fill;
                pnlFindMe.Controls.Add(c);
            }

            wizard.PageIndex = 0;

            // Update our UI
            numExtNum.Value             = extension.ExtensionNumber;
            txtFirstName.Text           = extension.FirstName;
            txtLastName.Text            = extension.LastName;
            cbEnableSearch.Checked      = extension.EnableSearch;
            cbEnableManagement.Checked  = extension.EnableManagement;
            cbEmailNotification.Checked = extension.EmailNotification;
            cbAttach.Checked            = extension.EmailAttachment;
            txtEmailAddress.Text        = extension.EmailAddress;
            cbCallScreening.Checked     = extension.EnableCallScreening;
            cbEnableOutbound.Checked    = extension.EnableOutboundCalls;

            if (!extension.IsUseConferenceTransferNull())
            {
                cbHandOff.Checked = !extension.UseConferenceTransfer;
            }
            else
            {
                cbHandOff.Checked = true;
            }

            greetingControl.LoadGreeting(voicemailGreeting, WOSI.Utilities.FileUtils.GetApplicationRelativePath(Properties.Settings.Default.GreetingsSoundCache));

            if (!extension.IsPasswordNull() && extension.Password.Length > 0)
            {
                txtPassword.Text        = blankPassword;
                txtConfirmPassword.Text = blankPassword;
            }

            if (!extension.IsPBXPasswordNull() && extension.PBXPassword.Length > 0)
            {
                txtPBXPassword.Text        = blankPassword;
                txtConfirmPBXPassword.Text = blankPassword;
            }

            txtFirstName.Select();

            btnImportOutlook.Enabled = Utilities.ContactManagement.ContactManagerFactory.CreateContactManager(Utilities.ContactManagement.ContactType.Outlook).IsInstalled;

            loading = false;
            greetingControl.LoadVoices(ManagementInterfaceClient.ManagementInterface.GetTTSVoices());

            pgFindme.Enabled       = true;
            pnlHandoff.Visible     = true;
            pnlPBXPassword.Visible = true;

            Utils.PrivateLabelUtils.ReplaceProductNameControl(this);
        }
        public FindMeNumberDiagramShape(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactRow)
        {
            this.contactRow = contactRow;
            this.extensions = extensions;

            InitializeComponent();

            Expanded = false;

            WOSI.Utilities.TimeUtils timeUtils = new WOSI.Utilities.TimeUtils();

            cboTimeZone.DataSource = timeUtils.TimeZones;
            cboTimeZone.SelectedIndex = timeUtils.CurrentTimeZoneIndex;

            numTimeout.Value = contactRow.Timeout;
            cbExtensionHours.Checked = contactRow.HasHoursOfOperation;
            scheduleControl.DeserializeSelection(contactRow.HoursOfOperation);

            // For compatibility with old data model
            if (contactRow.CallPBXPhone)
            {
                contactRow.CallPBXPhone = false;
                SelectIPPhone();
            }
            else
            {
                switch ((WOSI.CallButler.Data.ExtensionContactNumberType)contactRow.Type)
                {
                    case WOSI.CallButler.Data.ExtensionContactNumberType.TelephoneNumber:
                        SelectTelephone();
                        txtContactNumber.Text = contactRow.ContactNumber;
                        break;

                    case WOSI.CallButler.Data.ExtensionContactNumberType.Extension:
                        SelectExtension();

                        // Select the proper extension
                        try
                        {
                            Guid extensionID = new Guid(contactRow.ContactNumber);

                            foreach (global::Controls.ListBoxExItem item in cboExtension.Items)
                            {
                                WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = (WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow)item.Tag;

                                if (extension.ExtensionID == extensionID)
                                {
                                    cboExtension.SelectedItem = item;
                                }
                            }
                        }
                        catch
                        {
                        }

                        break;

                    case WOSI.CallButler.Data.ExtensionContactNumberType.IPPhone:
                        SelectIPPhone();
                        txtContactNumber.Text = "";
                        break;
                }
            }

            // Select the proper time zone
            if (!contactRow.IsHoursOfOperationUTCOffsetNull())
            {
                int tzIndex = timeUtils.GetTimeZoneIndexFromStandardOffset(contactRow.HoursOfOperationUTCOffset);

                if (tzIndex >= 0)
                {
                    cboTimeZone.SelectedIndex = tzIndex;
                }
            }

            loading = false;
        }
Beispiel #12
0
        private void Wizard_BeforePageChanged(object sender, global::Controls.Wizard.PageChangedEventArgs e)
        {
            switch (Wizard.PageIndex)
            {
            case 0:

                // Validate our Email address
                if (!System.Text.RegularExpressions.Regex.IsMatch(txtEmail.Text, @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"))
                {
                    MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_EnterValidEmail), CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_InvalidEmail), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtEmail.Clear();
                    txtEmail.Select();
                    e.Cancel = true;
                    return;
                }

                // Validate the user name
                if (txtName.Text.Length == 0)
                {
                    MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_NameRequired), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtName.Select();
                    e.Cancel = true;
                    return;
                }

                // Validate the user name
                if (txtPhone.Text.Length == 0)
                {
                    MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_PhoneNumberRequired), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtPhone.Select();
                    e.Cancel = true;
                    return;
                }

                // Validate the country
                if (cboCountry.SelectedIndex == 0)
                {
                    MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_SelectCountry), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    e.Cancel = true;
                    return;
                }

                /*if (txtEmail.Text != "*****@*****.**")
                 * {
                 *  // Send the registration to our webservice
                 *  RegistrationServices.RegistrationService regService = new CallButler.Manager.RegistrationServices.RegistrationService();
                 *
                 *  //Controls.LoadingDialog.ShowDialog(this, Properties.LocalizedStrings.Common_SendingData, Properties.Resources.loading, false, 2000);
                 *
                 *  try
                 *  {
                 *      regService.Register2(txtName.Text, txtEmail.Text, txtCompanyName.Text, ManagementInterfaceClient.ManagementInterface.ProductID, true, cboCountry.Text, txtPhone.Text);
                 *  }
                 *  catch(Exception exp)
                 *  {
                 *  }
                 *
                 *  //Controls.LoadingDialog.HideDialog();
                 * }*/

                ManagementInterfaceClient.ManagementInterface.IsDownloadRegistered = true;

                // Create a new default extension if one doesn't exist
                WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensionDataTable = ManagementInterfaceClient.ManagementInterface.GetExtensionNumber(ManagementInterfaceClient.AuthInfo, 100);

                if (extensionDataTable == null || extensionDataTable.Count == 0)
                {
                    // Create a new Extension row
                    extensionDataTable = new WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable();
                    WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = extensionDataTable.NewExtensionsRow();

                    extension.CustomerID        = Properties.Settings.Default.CustomerID;
                    extension.ExtensionID       = Guid.NewGuid();
                    extension.EmailAddress      = txtEmail.Text;
                    extension.EmailAttachment   = true;
                    extension.EmailNotification = true;
                    extension.EnableSearch      = true;
                    extension.ExtensionNumber   = 100;

                    string[] name = txtName.Text.Split(' ');
                    extension.FirstName = name[0];
                    if (name.Length > 1)
                    {
                        for (int index = 1; index < name.Length; index++)
                        {
                            extension.LastName += name[index] + " ";
                        }
                    }

                    extensionDataTable.AddExtensionsRow(extension);

                    // Persist our extension
                    ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensionDataTable);

                    // Create a new extension contact numbers table
                    WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable extensionContactNumbers = new WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable();

                    WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactNumber = extensionContactNumbers.NewExtensionContactNumbersRow();
                    contactNumber.ContactNumber            = txtPhone.Text;
                    contactNumber.ExtensionContactNumberID = Guid.NewGuid();
                    contactNumber.ExtensionID = extension.ExtensionID;
                    contactNumber.Timeout     = 20;

                    extensionContactNumbers.AddExtensionContactNumbersRow(contactNumber);

                    // Persist our contact numbers
                    ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, extensionContactNumbers);
                }

                break;
            }
        }
Beispiel #13
0
        public FindMeNumberDiagramShape(WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions, WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactRow)
        {
            this.contactRow = contactRow;
            this.extensions = extensions;

            InitializeComponent();

            Expanded = false;

            WOSI.Utilities.TimeUtils timeUtils = new WOSI.Utilities.TimeUtils();

            cboTimeZone.DataSource    = timeUtils.TimeZones;
            cboTimeZone.SelectedIndex = timeUtils.CurrentTimeZoneIndex;

            numTimeout.Value         = contactRow.Timeout;
            cbExtensionHours.Checked = contactRow.HasHoursOfOperation;
            scheduleControl.DeserializeSelection(contactRow.HoursOfOperation);

            // For compatibility with old data model
            if (contactRow.CallPBXPhone)
            {
                contactRow.CallPBXPhone = false;
                SelectIPPhone();
            }
            else
            {
                switch ((WOSI.CallButler.Data.ExtensionContactNumberType)contactRow.Type)
                {
                case WOSI.CallButler.Data.ExtensionContactNumberType.TelephoneNumber:
                    SelectTelephone();
                    txtContactNumber.Text = contactRow.ContactNumber;
                    break;

                case WOSI.CallButler.Data.ExtensionContactNumberType.Extension:
                    SelectExtension();

                    // Select the proper extension
                    try
                    {
                        Guid extensionID = new Guid(contactRow.ContactNumber);

                        foreach (global::Controls.ListBoxExItem item in cboExtension.Items)
                        {
                            WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = (WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow)item.Tag;

                            if (extension.ExtensionID == extensionID)
                            {
                                cboExtension.SelectedItem = item;
                            }
                        }
                    }
                    catch
                    {
                    }

                    break;

                case WOSI.CallButler.Data.ExtensionContactNumberType.IPPhone:
                    SelectIPPhone();
                    txtContactNumber.Text = "";
                    break;
                }
            }

            // Select the proper time zone
            if (!contactRow.IsHoursOfOperationUTCOffsetNull())
            {
                int tzIndex = timeUtils.GetTimeZoneIndexFromStandardOffset(contactRow.HoursOfOperationUTCOffset);

                if (tzIndex >= 0)
                {
                    cboTimeZone.SelectedIndex = tzIndex;
                }
            }

            loading = false;
        }
Beispiel #14
0
        private void Wizard_BeforePageChanged(object sender, global::Controls.Wizard.PageChangedEventArgs e)
        {
            switch (Wizard.PageIndex)
            {
                case 0:

                    // Validate our Email address
                    if (!System.Text.RegularExpressions.Regex.IsMatch(txtEmail.Text, @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"))
                    {
                        MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_EnterValidEmail), CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_InvalidEmail), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtEmail.Clear();
                        txtEmail.Select();
                        e.Cancel = true;
                        return;
                    }

                    // Validate the user name
                    if (txtName.Text.Length == 0)
                    {
                        MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_NameRequired), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtName.Select();
                        e.Cancel = true;
                        return;
                    }

                    // Validate the user name
                    if (txtPhone.Text.Length == 0)
                    {
                        MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_PhoneNumberRequired), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtPhone.Select();
                        e.Cancel = true;
                        return;
                    }

                    // Validate the country
                    if (cboCountry.SelectedIndex == 0)
                    {
                        MessageBox.Show(this, CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_SelectCountry), "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        e.Cancel = true;
                        return;
                    }

                    /*if (txtEmail.Text != "*****@*****.**")
                    {
                        // Send the registration to our webservice
                        RegistrationServices.RegistrationService regService = new CallButler.Manager.RegistrationServices.RegistrationService();

                        //Controls.LoadingDialog.ShowDialog(this, Properties.LocalizedStrings.Common_SendingData, Properties.Resources.loading, false, 2000);

                        try
                        {
                            regService.Register2(txtName.Text, txtEmail.Text, txtCompanyName.Text, ManagementInterfaceClient.ManagementInterface.ProductID, true, cboCountry.Text, txtPhone.Text);
                        }
                        catch(Exception exp)
                        {
                        }

                        //Controls.LoadingDialog.HideDialog();
                    }*/

                    ManagementInterfaceClient.ManagementInterface.IsDownloadRegistered = true;

                    // Create a new default extension if one doesn't exist
                    WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensionDataTable = ManagementInterfaceClient.ManagementInterface.GetExtensionNumber(ManagementInterfaceClient.AuthInfo, 100);

                    if (extensionDataTable == null || extensionDataTable.Count == 0)
                    {
                        // Create a new Extension row
                        extensionDataTable = new WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable();
                        WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = extensionDataTable.NewExtensionsRow();

                        extension.CustomerID = Properties.Settings.Default.CustomerID;
                        extension.ExtensionID = Guid.NewGuid();
                        extension.EmailAddress = txtEmail.Text;
                        extension.EmailAttachment = true;
                        extension.EmailNotification = true;
                        extension.EnableSearch = true;
                        extension.ExtensionNumber = 100;

                        string[] name = txtName.Text.Split(' ');
                        extension.FirstName = name[0];
                        if(name.Length > 1)
                        {
                            for (int index = 1; index < name.Length; index++)
                                extension.LastName += name[index] + " ";
                        }

                        extensionDataTable.AddExtensionsRow(extension);

                        // Persist our extension
                        ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensionDataTable);

                        // Create a new extension contact numbers table
                        WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable extensionContactNumbers = new WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable();

                        WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersRow contactNumber = extensionContactNumbers.NewExtensionContactNumbersRow();
                        contactNumber.ContactNumber = txtPhone.Text;
                        contactNumber.ExtensionContactNumberID = Guid.NewGuid();
                        contactNumber.ExtensionID = extension.ExtensionID;
                        contactNumber.Timeout = 20;

                        extensionContactNumbers.AddExtensionContactNumbersRow(contactNumber);

                        // Persist our contact numbers
                        ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, extensionContactNumbers);
                    }

                    break;
            }
        }
Beispiel #15
0
        private void btnHeadStart_Click(object sender, EventArgs e)
        {
            Forms.PrebuiltConfigForm pbForm = new CallButler.Manager.Forms.PrebuiltConfigForm();

            if (pbForm.ShowDialog(this) == DialogResult.OK)
            {
                WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions = new WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable();
                extensions.Merge(pbForm.ConfigurationData.Extensions);
                ManagementInterfaceClient.ManagementInterface.PersistExtension(ManagementInterfaceClient.AuthInfo, extensions);

                WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable contactNumbers = new WOSI.CallButler.Data.CallButlerDataset.ExtensionContactNumbersDataTable();
                contactNumbers.Merge(pbForm.ConfigurationData.ExtensionContactNumbers);
                ManagementInterfaceClient.ManagementInterface.PersistExtensionContactNumbers(ManagementInterfaceClient.AuthInfo, contactNumbers);

                ManagementInterfaceClient.ManagementInterface.PersistDepartment(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.Departments);

                WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable lgTable = new WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable();

                // Persist our greeting sounds
                foreach (WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow lgRow in pbForm.ConfigurationData.LocalizedGreetings)
                {
                    lgTable.Clear();
                    lgTable.ImportRow(lgRow);
                    ManagementInterfaceClient.ManagementInterface.PersistLocalizedGreeting(ManagementInterfaceClient.AuthInfo, lgTable);
                    Utils.GreetingUtils.PersistLocalizedGreetingSound(lgRow);
                }

                ManagementInterfaceClient.ManagementInterface.PersistPersonalizedGreeting(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.PersonalizedGreetings);
                ManagementInterfaceClient.ManagementInterface.PersistProviders(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.Providers);
                ManagementInterfaceClient.ManagementInterface.PersistScriptSchedule(ManagementInterfaceClient.AuthInfo, pbForm.ConfigurationData.ScriptSchedules);

                // Send us back to the try it now page
                Wizard.NextTo(pgTest);
            }
        }
        public PersonalizedGreetingForm(WOSI.CallButler.Data.CallButlerDataset.PersonalizedGreetingsRow personalizedGreeting, WOSI.CallButler.Data.CallButlerDataset.ExtensionsDataTable extensions)
        {
            InitializeComponent();

            this.personalizedGreeting = personalizedGreeting;

            LoadData();

            wizard.PageIndex = 0;

            txtCallerID.Select();

            rbScript.Visible         = true;
            lblScript.Visible        = true;
            btnImportOutlook.Enabled = Utilities.ContactManagement.ContactManagerFactory.CreateContactManager(Utilities.ContactManagement.ContactType.Outlook).IsInstalled;

            Utils.PrivateLabelUtils.ReplaceProductNameControl(this);
        }