public StepRegistrationForm(CrmOrganization org, MainControl orgControl, CrmPlugin plugin, CrmPluginStep step, CrmServiceEndpoint serviceEndpoint) { if (org == null) { throw new ArgumentNullException("org"); } else if (orgControl == null) { throw new ArgumentNullException("control"); } m_org = org; m_orgControl = orgControl; m_currentStep = step; #region Initialization of crmFilteringAttributes //Seems this was removed automatically by VS designer, so added here instead. crmFilteringAttributes = new Controls.CrmAttributeSelectionControl() { Organization = org }; // // crmFilteringAttributes // this.crmFilteringAttributes.Anchor = ((AnchorStyles.Top | AnchorStyles.Left) | AnchorStyles.Right); this.crmFilteringAttributes.Attributes = null; this.crmFilteringAttributes.DisabledMessage = ""; //this.crmFilteringAttributes.EntityName = null; this.crmFilteringAttributes.Location = new System.Drawing.Point(127, 91); this.crmFilteringAttributes.Margin = new Padding(4, 5, 4, 5); this.crmFilteringAttributes.Name = "crmFilteringAttributes"; //this.crmFilteringAttributes.Organization = null; this.crmFilteringAttributes.ScrollBars = ScrollBars.None; this.crmFilteringAttributes.Size = new System.Drawing.Size(316, 20); this.crmFilteringAttributes.TabIndex = 9; this.crmFilteringAttributes.WordWrap = false; #endregion Initialization of crmFilteringAttributes InitializeComponent(); this.grpGeneral.Controls.Add(this.crmFilteringAttributes); //Initialize the auto-complete on the Message field var msgList = new AutoCompleteStringCollection(); foreach (CrmMessage msg in org.Messages.Values) { msgList.Add(msg.Name); } txtMessageName.AutoCompleteCustomSource = msgList; //Check whether system plugins should be added to the list if (step != null && org[step.AssemblyId][step.PluginId].IsSystemCrmEntity && (!OrganizationHelper.AllowStepRegistrationForPlugin(plugin))) { cmbPlugins.Enabled = false; } else if ((plugin != null) && (!OrganizationHelper.AllowStepRegistrationForPlugin(plugin))) { plugin = null; } //Add the plugins CrmPlugin selectPlugin = null; foreach (CrmPluginAssembly assembly in org.Assemblies.Values) { foreach (CrmPlugin pluginType in assembly.Plugins.Values) { if (pluginType.PluginType == CrmPluginType.Plugin && OrganizationHelper.AllowStepRegistrationForPlugin(pluginType)) { if (serviceEndpoint == null && pluginType.TypeName == CrmServiceEndpoint.ServiceBusPluginName && pluginType.CustomizationLevel == 0) { continue; // Donot add OOB Service Bus plugin to the list when it it is not a Service Bus Step } else { if (plugin != null && plugin.PluginId == pluginType.PluginId) { selectPlugin = pluginType; cmbPlugins.Items.Add(pluginType); } else { cmbPlugins.Items.Add(pluginType); } } } } } if (cmbPlugins.Items.Count != 0) { if (selectPlugin == null) { cmbPlugins.SelectedIndex = 0; } else { cmbPlugins.SelectedItem = selectPlugin; } } //Create a user that represents the current user var callingUser = new CrmUser(org) { UserId = Guid.Empty, Name = "Calling User", Enabled = true }; cmbUsers.Items.Add(callingUser); CrmServiceEndpoint selectServiceEndpoint = null; foreach (CrmServiceEndpoint currentServiceEndpoint in org.ServiceEndpoints.Values) { if (serviceEndpoint != null && serviceEndpoint.ServiceEndpointId == currentServiceEndpoint.ServiceEndpointId) { selectServiceEndpoint = currentServiceEndpoint; } cmbServiceEndpoint.Items.Add(currentServiceEndpoint); } if (selectServiceEndpoint != null) { cmbServiceEndpoint.SelectedItem = selectServiceEndpoint; } else { if (cmbServiceEndpoint.Items.Count != 0) { cmbServiceEndpoint.SelectedIndex = 0; } } if (serviceEndpoint != null) { UpdatePluginEventHandlerControls(true); } else { UpdatePluginEventHandlerControls(false); } if (m_currentStep != null) { txtMessageName.Text = m_org.Messages[m_currentStep.MessageId].Name; if (org.MessageEntities.ContainsKey(m_currentStep.MessageEntityId)) { CrmMessageEntity msgEntity = Message[m_currentStep.MessageEntityId]; txtPrimaryEntity.Text = msgEntity.PrimaryEntity; txtSecondaryEntity.Text = msgEntity.SecondaryEntity; } else { txtPrimaryEntity.Text = "none"; txtSecondaryEntity.Text = "none"; } cmbPlugins.SelectedItem = m_org[m_currentStep.AssemblyId][m_currentStep.PluginId]; if (m_currentStep.ServiceBusConfigurationId != Guid.Empty) { cmbServiceEndpoint.SelectedItem = m_org.ServiceEndpoints[m_currentStep.ServiceBusConfigurationId]; } txtRank.Text = m_currentStep.Rank.ToString(); switch (m_currentStep.Stage) { case CrmPluginStepStage.PreValidation: radStagePreValidation.Checked = true; break; case CrmPluginStepStage.PreOperation: radStagePreOperation.Checked = true; break; case CrmPluginStepStage.PostOperation: radStagePostOperation.Checked = true; break; case CrmPluginStepStage.PostOperationDeprecated: radStagePostOperationDeprecated.Checked = true; break; default: throw new NotImplementedException("CrmPluginStepStage = " + m_currentStep.Stage.ToString()); } switch (m_currentStep.Mode) { case CrmPluginStepMode.Asynchronous: radModeAsync.Checked = true; break; case CrmPluginStepMode.Synchronous: radModeSync.Checked = true; break; default: throw new NotImplementedException("Mode = " + m_currentStep.Mode.ToString()); } switch (m_currentStep.Deployment) { case CrmPluginStepDeployment.Both: chkDeploymentOffline.Checked = true; chkDeploymentServer.Checked = true; break; case CrmPluginStepDeployment.ServerOnly: chkDeploymentOffline.Checked = false; chkDeploymentServer.Checked = true; break; case CrmPluginStepDeployment.OfflineOnly: chkDeploymentOffline.Checked = true; chkDeploymentServer.Checked = false; break; default: throw new NotImplementedException("Deployment = " + m_currentStep.Deployment.ToString()); } switch (m_currentStep.InvocationSource) { case null: case CrmPluginStepInvocationSource.Parent: radInvocationParent.Checked = true; break; case CrmPluginStepInvocationSource.Child: radInvocationChild.Checked = true; break; default: throw new NotImplementedException("InvocationSource = " + m_currentStep.InvocationSource.ToString()); } txtDescription.Text = m_currentStep.Description; txtSecureConfig.Text = m_currentStep.SecureConfiguration; string stepName; //if (this.m_currentStep.IsProfiled && org.Plugins[this.m_currentStep.PluginId].IsProfilerPlugin) //{ // //If the current step is a profiler step, the form that is displayed should use the configuration from the original step. // // ProfilerConfiguration profilerConfig = OrganizationHelper.RetrieveProfilerConfiguration(this.m_currentStep); // // stepName = profilerConfig.OriginalEventHandlerName; // // txtUnsecureConfiguration.Text = profilerConfig.Configuration; //} //else //{ txtUnsecureConfiguration.Text = m_currentStep.UnsecureConfiguration; stepName = m_currentStep.Name; //} if (stepName == GenerateDescription()) { m_stepName = GenerateDescription(); } else { m_stepName = null; txtName.Text = stepName; } if (MessageEntity != null) { crmFilteringAttributes.EntityName = MessageEntity.PrimaryEntity; } crmFilteringAttributes.Attributes = m_currentStep.FilteringAttributes; chkDeleteAsyncOperationIfSuccessful.Checked = m_currentStep.DeleteAsyncOperationIfSuccessful; chkDeleteAsyncOperationIfSuccessful.Enabled = (m_currentStep.Mode == CrmPluginStepMode.Asynchronous); Text = "Update Existing Step"; btnRegister.Text = "Update"; CheckAttributesSupported(); } else if (!radStagePostOperation.Enabled && radStagePostOperationDeprecated.Enabled) { radStagePostOperationDeprecated.Checked = true; } //Check if permissions for the secure configuration was denied if (org.SecureConfigurationPermissionDenied) { picAccessDenied.Visible = true; lblAccessDenied.Visible = true; txtSecureConfig.Visible = false; picAccessDenied.Image = CrmResources.LoadImage("AccessDenied"); lblAccessDenied.Left = picAccessDenied.Right; int groupLeft = (grpSecureConfiguration.ClientSize.Width - (lblAccessDenied.Right - picAccessDenied.Left)) / 2; int groupTop = (grpSecureConfiguration.ClientSize.Height - lblAccessDenied.Height) / 2; picAccessDenied.Top = groupTop; lblAccessDenied.Top = groupTop; picAccessDenied.Left = groupLeft; lblAccessDenied.Left = picAccessDenied.Right; } else if (null != step && step.SecureConfigurationRecordIdInvalid) { picInvalidSecureConfigurationId.Visible = true; lblInvalidSecureConfigurationId.Visible = true; lnkInvalidSecureConfigurationId.Visible = true; txtSecureConfig.Visible = false; picInvalidSecureConfigurationId.Image = CrmResources.LoadImage("AccessDenied"); lblInvalidSecureConfigurationId.Left = picInvalidSecureConfigurationId.Right; int groupLeft = (grpSecureConfiguration.ClientSize.Width - (lblInvalidSecureConfigurationId.Right - picInvalidSecureConfigurationId.Left)) / 2; int groupTop = (grpSecureConfiguration.ClientSize.Height - (lnkInvalidSecureConfigurationId.Bottom - picInvalidSecureConfigurationId.Top)) / 2; picInvalidSecureConfigurationId.Top = groupTop; lblInvalidSecureConfigurationId.Top = groupTop; lnkInvalidSecureConfigurationId.Top = lblInvalidSecureConfigurationId.Bottom + 6; picInvalidSecureConfigurationId.Left = groupLeft; lblInvalidSecureConfigurationId.Left = picAccessDenied.Right; lnkInvalidSecureConfigurationId.Left = lblInvalidSecureConfigurationId.Left; m_secureConfigurationIdIsInvalid = true; } LoadEntities(); CheckDeploymentSupported(); }
public StepRegistrationForm(CrmOrganization org, MainControl orgControl, CrmPlugin plugin, CrmPluginStep step, CrmServiceEndpoint serviceEndpoint) { if (org == null) { throw new ArgumentNullException("org"); } else if (orgControl == null) { throw new ArgumentNullException("control"); } InitializeComponent(); m_org = org; m_orgControl = orgControl; m_currentStep = step; crmFilteringAttributes.Organization = org; //Initialize the auto-complete on the Message field AutoCompleteStringCollection msgList = new AutoCompleteStringCollection(); foreach (CrmMessage msg in org.Messages.Values) { msgList.Add(msg.Name); } txtMessageName.AutoCompleteCustomSource = msgList; //Check whether system plugins should be added to the list if (step != null && org[step.AssemblyId][step.PluginId].IsSystemCrmEntity && (!OrganizationHelper.AllowStepRegistrationForPlugin(plugin))) { cmbPlugins.Enabled = false; } else if ((plugin != null) && (!OrganizationHelper.AllowStepRegistrationForPlugin(plugin))) { plugin = null; } //Add the plugins CrmPlugin selectPlugin = null; foreach (CrmPluginAssembly assembly in org.Assemblies.Values) { foreach (CrmPlugin pluginType in assembly.Plugins.Values) { if (pluginType.PluginType == CrmPluginType.Plugin && OrganizationHelper.AllowStepRegistrationForPlugin(pluginType)) { if (serviceEndpoint == null && pluginType.TypeName == CrmServiceEndpoint.ServiceBusPluginName && pluginType.CustomizationLevel == 0) { continue; // Donot add OOB Service Bus plugin to the list when it it is not a Service Bus Step } else { if (plugin != null && plugin.PluginId == pluginType.PluginId) { selectPlugin = pluginType; cmbPlugins.Items.Add(pluginType); } else { cmbPlugins.Items.Add(pluginType); } } } } } if (cmbPlugins.Items.Count != 0) { if (selectPlugin == null) { cmbPlugins.SelectedIndex = 0; } else { cmbPlugins.SelectedItem = selectPlugin; } } //Create a user that represents the current user CrmUser callingUser = new CrmUser(org); callingUser.UserId = Guid.Empty; callingUser.Name = "Calling User"; callingUser.Enabled = true; cmbUsers.Items.Add(callingUser); //Add the users. We do not want to sort because the users list is sorted already and then the calling user //will not be at the beginning of the list cmbUsers.Sorted = false; foreach (CrmUser user in org.Users.Values) { // Added this check to to prevent OutofMemoryExcetion - When an org is imported, the administrator // does not have a name associated with it, Adding Null Names to ComboBox throws OutofMemoryExcetion if (null != user && user.Enabled == true && user.Name != null) { cmbUsers.Items.Add(user); } // Special case to add System user if (user.Name == "SYSTEM" && user.Enabled == false) { cmbUsers.Items.Add(user); } } if (cmbUsers.Items.Count != 0) { cmbUsers.SelectedIndex = 0; } CrmServiceEndpoint selectServiceEndpoint = null; foreach (CrmServiceEndpoint currentServiceEndpoint in org.ServiceEndpoints.Values) { if (serviceEndpoint != null && serviceEndpoint.ServiceEndpointId == currentServiceEndpoint.ServiceEndpointId) { selectServiceEndpoint = currentServiceEndpoint; } cmbServiceEndpoint.Items.Add(currentServiceEndpoint); } if (selectServiceEndpoint != null) { cmbServiceEndpoint.SelectedItem = selectServiceEndpoint; } else { if (cmbServiceEndpoint.Items.Count != 0) { cmbServiceEndpoint.SelectedIndex = 0; } } if (serviceEndpoint != null) { UpdatePluginEventHandlerControls(true); } else { UpdatePluginEventHandlerControls(false); } if (m_currentStep != null) { txtMessageName.Text = m_org.Messages[m_currentStep.MessageId].Name; if (org.MessageEntities.ContainsKey(m_currentStep.MessageEntityId)) { CrmMessageEntity msgEntity = Message[m_currentStep.MessageEntityId]; txtPrimaryEntity.Text = msgEntity.PrimaryEntity; txtSecondaryEntity.Text = msgEntity.SecondaryEntity; } else { txtPrimaryEntity.Text = "none"; txtSecondaryEntity.Text = "none"; } cmbPlugins.SelectedItem = m_org[m_currentStep.AssemblyId][m_currentStep.PluginId]; if (m_currentStep.ServiceBusConfigurationId != Guid.Empty) { cmbServiceEndpoint.SelectedItem = m_org.ServiceEndpoints[m_currentStep.ServiceBusConfigurationId]; } if (m_currentStep.ImpersonatingUserId == Guid.Empty) { cmbUsers.SelectedIndex = 0; } else { cmbUsers.SelectedItem = m_org.Users[m_currentStep.ImpersonatingUserId]; } txtRank.Text = m_currentStep.Rank.ToString(); switch (m_currentStep.Stage) { case CrmPluginStepStage.PreValidation: radStagePreValidation.Checked = true; break; case CrmPluginStepStage.PreOperation: radStagePreOperation.Checked = true; break; case CrmPluginStepStage.PostOperation: radStagePostOperation.Checked = true; break; case CrmPluginStepStage.PostOperationDeprecated: radStagePostOperationDeprecated.Checked = true; break; default: throw new NotImplementedException("CrmPluginStepStage = " + m_currentStep.Stage.ToString()); } switch (m_currentStep.Mode) { case CrmPluginStepMode.Asynchronous: radModeAsync.Checked = true; break; case CrmPluginStepMode.Synchronous: radModeSync.Checked = true; break; default: throw new NotImplementedException("Mode = " + m_currentStep.Mode.ToString()); } switch (m_currentStep.Deployment) { case CrmPluginStepDeployment.Both: chkDeploymentOffline.Checked = true; chkDeploymentServer.Checked = true; break; case CrmPluginStepDeployment.ServerOnly: chkDeploymentOffline.Checked = false; chkDeploymentServer.Checked = true; break; case CrmPluginStepDeployment.OfflineOnly: chkDeploymentOffline.Checked = true; chkDeploymentServer.Checked = false; break; default: throw new NotImplementedException("Deployment = " + m_currentStep.Deployment.ToString()); } switch (m_currentStep.InvocationSource) { case null: case CrmPluginStepInvocationSource.Parent: radInvocationParent.Checked = true; break; case CrmPluginStepInvocationSource.Child: radInvocationChild.Checked = true; break; default: throw new NotImplementedException("InvocationSource = " + m_currentStep.InvocationSource.ToString()); } txtDescription.Text = m_currentStep.Description; txtSecureConfig.Text = m_currentStep.SecureConfiguration; string stepName; //if (this.m_currentStep.IsProfiled && org.Plugins[this.m_currentStep.PluginId].IsProfilerPlugin) //{ // //If the current step is a profiler step, the form that is displayed should use the configuration from the original step. // // ProfilerConfiguration profilerConfig = OrganizationHelper.RetrieveProfilerConfiguration(this.m_currentStep); // // stepName = profilerConfig.OriginalEventHandlerName; // // txtUnsecureConfiguration.Text = profilerConfig.Configuration; //} //else //{ txtUnsecureConfiguration.Text = m_currentStep.UnsecureConfiguration; stepName = m_currentStep.Name; //} if (stepName == GenerateDescription()) { m_stepName = GenerateDescription(); } else { m_stepName = null; txtName.Text = stepName; } if (MessageEntity != null) { crmFilteringAttributes.EntityName = MessageEntity.PrimaryEntity; } crmFilteringAttributes.Attributes = m_currentStep.FilteringAttributes; chkDeleteAsyncOperationIfSuccessful.Checked = m_currentStep.DeleteAsyncOperationIfSuccessful; chkDeleteAsyncOperationIfSuccessful.Enabled = (m_currentStep.Mode == CrmPluginStepMode.Asynchronous); Text = "Update Existing Step"; btnRegister.Text = "Update"; CheckAttributesSupported(); } else if (!radStagePostOperation.Enabled && radStagePostOperationDeprecated.Enabled) { radStagePostOperationDeprecated.Checked = true; } //Check if permissions for the secure configuration was denied if (org.SecureConfigurationPermissionDenied) { picAccessDenied.Visible = true; lblAccessDenied.Visible = true; txtSecureConfig.Visible = false; picAccessDenied.Image = CrmResources.LoadImage("AccessDenied"); lblAccessDenied.Left = picAccessDenied.Right; int groupLeft = (grpSecureConfiguration.ClientSize.Width - (lblAccessDenied.Right - picAccessDenied.Left)) / 2; int groupTop = (grpSecureConfiguration.ClientSize.Height - lblAccessDenied.Height) / 2; picAccessDenied.Top = groupTop; lblAccessDenied.Top = groupTop; picAccessDenied.Left = groupLeft; lblAccessDenied.Left = picAccessDenied.Right; } else if (null != step && step.SecureConfigurationRecordIdInvalid) { picInvalidSecureConfigurationId.Visible = true; lblInvalidSecureConfigurationId.Visible = true; lnkInvalidSecureConfigurationId.Visible = true; txtSecureConfig.Visible = false; picInvalidSecureConfigurationId.Image = CrmResources.LoadImage("AccessDenied"); lblInvalidSecureConfigurationId.Left = picInvalidSecureConfigurationId.Right; int groupLeft = (grpSecureConfiguration.ClientSize.Width - (lblInvalidSecureConfigurationId.Right - picInvalidSecureConfigurationId.Left)) / 2; int groupTop = (grpSecureConfiguration.ClientSize.Height - (lnkInvalidSecureConfigurationId.Bottom - picInvalidSecureConfigurationId.Top)) / 2; picInvalidSecureConfigurationId.Top = groupTop; lblInvalidSecureConfigurationId.Top = groupTop; lnkInvalidSecureConfigurationId.Top = lblInvalidSecureConfigurationId.Bottom + 6; picInvalidSecureConfigurationId.Left = groupLeft; lblInvalidSecureConfigurationId.Left = picAccessDenied.Right; lnkInvalidSecureConfigurationId.Left = lblInvalidSecureConfigurationId.Left; m_secureConfigurationIdIsInvalid = true; } LoadEntities(); CheckDeploymentSupported(); }