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); }
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); }
/*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(); } }
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); }
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; * }*/ } } }
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; } }
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); }