Ejemplo n.º 1
0
        public DepartmentForm(WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow departmentRow, WOSI.CallButler.Data.CallButlerDataset data)
        {
            this.departmentRow = departmentRow;

            InitializeComponent();

            PopulateAddonModuleList();

            this.callButlerDataset = data;
            bsMailboxes.DataSource = this.callButlerDataset;

            wizard.PageIndex = 0;
            wzdDepartmentDetails.PageIndex = 0;
            numOptionNumber.Value = departmentRow.OptionNumber;
            txtDepartmentName.Select();
            txtDepartmentName.Text = departmentRow.Name;

            switch ((WOSI.CallButler.Data.DepartmentTypes)departmentRow.Type)
            {
                case WOSI.CallButler.Data.DepartmentTypes.Greeting:
                    rbPlayMessage.Checked = true;

                    break;
                case WOSI.CallButler.Data.DepartmentTypes.Extension:
                    rbTransferExtension.Checked = true;
                    break;
                case WOSI.CallButler.Data.DepartmentTypes.Number:
                    rbTransferNumber.Checked = true;

                    txtTelephoneNumber.Text = departmentRow.Data1;

                    break;
                case WOSI.CallButler.Data.DepartmentTypes.Script:
                    rbScript.Checked = true;

                    txtScriptFile.Text = departmentRow.Data1;

                    break;

                case WOSI.CallButler.Data.DepartmentTypes.Module:
                    rbAddon.Checked = true;

                    SelectAddonModule(departmentRow.Data1);

                    break;
            }

            UpdateDepartmentTypeView();

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

            lblNumberDescription.Text = ManagementInterfaceClient.ManagementInterface.TelephoneNumberDescription;
            lblNumber.Text += lblNumberDescription.Text;

            Utils.PrivateLabelUtils.ReplaceProductNameControl(this);
        }
Ejemplo n.º 2
0
        void btnEditDepartment_Click(object sender, EventArgs e)
        {
            CallFlowItem cfItem = (CallFlowItem)((Control)sender).Tag;

            WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow department = (WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow)cfItem.Tag;

            EditDepartment(department, cfItem);
            diagramControl.ScrollControlIntoView(cfItem);
        }
Ejemplo n.º 3
0
        /*void RenumberDepartmentOptions()
         * {
         *  WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow[] departments = (WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow[])vbData.Departments.Select("", "OptionNumber ASC");
         *
         *  int optionNumber = 1;
         *
         *  foreach (WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow department in departments)
         *  {
         *      if (department.RowState != DataRowState.Deleted)
         *      {
         *          department.OptionNumber = optionNumber;
         *          optionNumber++;
         *      }
         *  }
         *
         *  ManagementInterfaceClient.ManagementInterface.PersistDepartment(ManagementInterfaceClient.AuthInfo, vbData.Departments);
         *  vbData.Departments.AcceptChanges();
         *  UpdateDepartments();
         * }*/

        void EditDepartment(WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow department, CallFlowItem cfItem)
        {
            Forms.DepartmentForm dpForm = new CallButler.Manager.Forms.DepartmentForm(department, vbData);
            WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsRow localizedGreeting = null;

            // Get and load our localized greeting if this is a greeting department
            if (department.Type == (short)WOSI.CallButler.Data.DepartmentTypes.Greeting)
            {
                WOSI.CallButler.Data.CallButlerDataset.LocalizedGreetingsDataTable localizedGreetings = ManagementInterfaceClient.ManagementInterface.GetLocalizedGreeting(ManagementInterfaceClient.AuthInfo, department.DepartmentID, GetCurrentLanguage());

                if (localizedGreetings.Count > 0)
                {
                    localizedGreeting = localizedGreetings[0];
                    Utils.GreetingUtils.GetLocalizedGreetingSound(localizedGreeting);
                    dpForm.GreetingControl.LoadGreeting(localizedGreeting, WOSI.Utilities.FileUtils.GetApplicationRelativePath(Properties.Settings.Default.GreetingsSoundCache));
                }
            }

            if (dpForm.ShowDialog(this) == DialogResult.OK)
            {
                vbData.AcceptChanges();

                // Update our department item remotely

                ManagementInterfaceClient.ManagementInterface.PersistDepartment(ManagementInterfaceClient.AuthInfo, Utils.TableUtils <WOSI.CallButler.Data.CallButlerDataset.DepartmentsDataTable> .CreateTableFromRow(department));

                PersistDepartmentGreeting(department, localizedGreeting, dpForm);


                //if ((WOSI.CallButler.Data.DepartmentTypes)department.Type == WOSI.CallButler.Data.DepartmentTypes.Greeting)
                //    dpForm.GreetingControl.SaveGreeting(WOSI.Utilities.FileUtils.GetApplicationRelativePath(Properties.Settings.Default.GreetingsSoundCache));


                UpdateDepartmentItem(cfItem);
                NotifyUpdateMenuGreeting();
            }
        }
Ejemplo n.º 4
0
        CallFlowItem AddCallFlowDepartmentItem(WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow department)
        {
            // Create our call flow item
            CallFlowItem cfItem = new CallFlowItem();

            cfItem.Icon  = Properties.Resources.office_24;
            cfItem.Width = 220;
            cfItem.Tag   = department;

            LinkButton btnDeleteDepartment = CreateLinkButton(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_Delete));

            btnDeleteDepartment.Tag    = cfItem;
            btnDeleteDepartment.Click += new EventHandler(btnDeleteDepartment_Click);
            cfItem.AddActionControl(btnDeleteDepartment);

            LinkButton btnEditDepartment = CreateLinkButton(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.Common_Edit));

            btnEditDepartment.Tag    = cfItem;
            btnEditDepartment.Click += new EventHandler(btnEditDepartment_Click);
            cfItem.AddActionControl(btnEditDepartment);

            mainMenuItem.AddChildShape(cfItem);

            // Create our sub call flow item
            CallFlowItem subItem = new CallFlowItem();

            subItem.Width = 220;
            cfItem.AddChildShape(subItem);

            UpdateDepartmentItem(cfItem);

            mainMenuItem.Expanded = true;
            cfItem.Expanded       = true;

            return(cfItem);
        }
Ejemplo n.º 5
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;
                     *  }*/
                }
            }
        }
Ejemplo n.º 6
0
        private void UpdateDepartmentItem(CallFlowItem departmentItem)
        {
            WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow departmentRow = (WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow)departmentItem.Tag;
            departmentItem.Title = String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_Dial), departmentRow.OptionNumber, departmentRow.Name);

            CallFlowItem subItem = (CallFlowItem)departmentItem.ChildShapes[0];

            subItem.Title   = "";
            subItem.Caption = "";

            switch ((WOSI.CallButler.Data.DepartmentTypes)departmentRow.Type)
            {
            case WOSI.CallButler.Data.DepartmentTypes.Extension:

                // Get our extenstion
                try
                {
                    WOSI.CallButler.Data.CallButlerDataset.ExtensionsRow extension = vbData.Extensions.FindByExtensionID(new Guid(departmentRow.Data1));

                    if (extension != null)
                    {
                        subItem.Icon    = Properties.Resources.telephone_24;
                        subItem.Title   = String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_TransferExt), extension.ExtensionNumber);
                        subItem.Caption = extension.FirstName + " " + extension.LastName;
                    }

                    break;
                }
                catch
                {
                }

                subItem.Icon    = Properties.Resources.telephone_24;
                subItem.Title   = CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_UnknownExt);
                subItem.Caption = CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_ExtDeleted);

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Greeting:
                subItem.Title = CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_PlayGreeting);
                subItem.Icon  = Properties.Resources.call_greeting_24;

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Number:

                subItem.Icon  = Properties.Resources.telephone_24;
                subItem.Title = String.Format(CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_TransferNum), WOSI.Utilities.StringUtils.FormatPhoneNumber(departmentRow.Data1));

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Script:

                subItem.Icon  = Properties.Resources.scroll_24;
                subItem.Title = CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_CustomScript);
                break;

            case WOSI.CallButler.Data.DepartmentTypes.Module:

                subItem.Icon  = Properties.Resources.gear_connection_24;
                subItem.Title = CallButler.Manager.Utils.PrivateLabelUtils.ReplaceProductName(Properties.LocalizedStrings.CallFlowView_AddonModule);

                break;
            }
        }
Ejemplo n.º 7
0
        public DepartmentForm(WOSI.CallButler.Data.CallButlerDataset.DepartmentsRow departmentRow, WOSI.CallButler.Data.CallButlerDataset data)
        {
            this.departmentRow = departmentRow;

            InitializeComponent();

            PopulateAddonModuleList();

            this.callButlerDataset = data;
            bsMailboxes.DataSource = this.callButlerDataset;

            wizard.PageIndex = 0;
            wzdDepartmentDetails.PageIndex = 0;
            numOptionNumber.Value          = departmentRow.OptionNumber;
            txtDepartmentName.Select();
            txtDepartmentName.Text = departmentRow.Name;

            switch ((WOSI.CallButler.Data.DepartmentTypes)departmentRow.Type)
            {
            case WOSI.CallButler.Data.DepartmentTypes.Greeting:
                rbPlayMessage.Checked = true;

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Extension:
                rbTransferExtension.Checked = true;
                break;

            case WOSI.CallButler.Data.DepartmentTypes.Number:
                rbTransferNumber.Checked = true;

                txtTelephoneNumber.Text = departmentRow.Data1;

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Script:
                rbScript.Checked = true;

                txtScriptFile.Text = departmentRow.Data1;

                break;

            case WOSI.CallButler.Data.DepartmentTypes.Module:
                rbAddon.Checked = true;

                SelectAddonModule(departmentRow.Data1);

                break;
            }

            UpdateDepartmentTypeView();

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

            lblNumberDescription.Text = ManagementInterfaceClient.ManagementInterface.TelephoneNumberDescription;
            lblNumber.Text           += lblNumberDescription.Text;

            Utils.PrivateLabelUtils.ReplaceProductNameControl(this);
        }