/// <summary> /// Class constructor used by the EntityForm Control /// </summary> public FormConfiguration(IPortalContext portalContext, string entityName, FormActionMetadata formActionMetadata, string portalName, int languageCode, bool enableEntityPermissions, bool autoGenerateStepsFromTabs, bool addSubmitButton = false, bool addNextPrevious = false) { ShowActionButtonContainer = JsonConfiguration.ShowActionButtonContainer.No; EntityName = entityName; IntializeSpecialActionLinks(); SubmitActionLink = new SubmitActionLink(); PreviousActionLink = new PreviousActionLink(); NextActionLink = new NextActionLink(); CreateRelatedRecordActionLink = new CreateRelatedRecordActionLink(); if (formActionMetadata == null) { return; } ActionButtonDropDownLabel = formActionMetadata.ActionButtonDropDownLabel.GetLocalizedString(languageCode); ActionNavbarCssClass = formActionMetadata.ActionNavbarCssClass; TopContainerCssClass = formActionMetadata.TopContainerCssClass; BottomContainerCssClass = formActionMetadata.BottomContainerCssClass; ActionButtonStyle = formActionMetadata.ActionButtonStyle; ActionButtonPlacement = formActionMetadata.ActionButtonPlacement; ActionButtonAlignment = formActionMetadata.ActionButtonAlignment; EnableEntityPermissions = enableEntityPermissions; PortalName = portalName; LanguageCode = languageCode; AutoGenerateSteps = autoGenerateStepsFromTabs; if (formActionMetadata.Actions != null) { SetFormActions(portalContext, formActionMetadata, languageCode, portalName, addSubmitButton, addNextPrevious); } }
private void SetSpecialMessageActions(IPortalContext portalContext, FormActionMetadata formActionMetadata, int languageCode, Action action, List <ViewActionLink> topItemActionLinks, List <ViewActionLink> bottomItemActionLinks, string portalName = null) { if (action is CloseIncidentAction) { var closeIncidentAction = (CloseIncidentAction)action; if (!closeIncidentAction.IsConfigurationValid()) { return; } var closeIncidentActionLink = new CloseIncidentActionLink(portalContext, formActionMetadata, languageCode, closeIncidentAction, true, null, portalName); CloseIncidentActionLink = closeIncidentActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, closeIncidentActionLink); } if (action is ResolveCaseAction) { var resolveCaseAction = (ResolveCaseAction)action; if (!resolveCaseAction.IsConfigurationValid()) { return; } var resolveCaseActionLink = new ResolveCaseActionLink(portalContext, formActionMetadata, languageCode, resolveCaseAction, true, null, portalName); ResolveCaseActionLink = resolveCaseActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, resolveCaseActionLink); } if (action is ReopenCaseAction) { var reopenCaseAction = (ReopenCaseAction)action; if (!reopenCaseAction.IsConfigurationValid()) { return; } var reopenCaseActionLink = new ReopenCaseActionLink(portalContext, formActionMetadata, languageCode, reopenCaseAction, true, null, portalName); ReopenCaseActionLink = reopenCaseActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, reopenCaseActionLink); } if (action is CancelCaseAction) { var cancelCaseAction = (CancelCaseAction)action; if (!cancelCaseAction.IsConfigurationValid()) { return; } var cancelCaseActionLink = new CancelCaseActionLink(portalContext, formActionMetadata, languageCode, cancelCaseAction, true, null, portalName); CancelCaseActionLink = cancelCaseActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, cancelCaseActionLink); } if (action is QualifyLeadAction) { var qualifyLeadAction = (QualifyLeadAction)action; if (!qualifyLeadAction.IsConfigurationValid()) { return; } var qualifyLeadActionLink = new QualifyLeadActionLink(portalContext, formActionMetadata, languageCode, qualifyLeadAction, true, null, portalName); QualifyLeadActionLink = qualifyLeadActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, qualifyLeadActionLink); } if (action is ConvertQuoteToOrderAction) { var convertQuoteToOrderAction = (ConvertQuoteToOrderAction)action; if (!convertQuoteToOrderAction.IsConfigurationValid()) { return; } var convertQuoteToOrderActionLink = new ConvertQuoteToOrderActionLink(portalContext, formActionMetadata, languageCode, (ConvertQuoteToOrderAction)action); ConvertQuoteToOrderActionLink = convertQuoteToOrderActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, convertQuoteToOrderActionLink); } if (action is ConvertOrderToInvoiceAction) { var convertOrderToInvoiceAction = (ConvertOrderToInvoiceAction)action; if (!convertOrderToInvoiceAction.IsConfigurationValid()) { return; } var convertOrderToInvoiceActionLink = new ConvertOrderToInvoiceActionLink(portalContext, formActionMetadata, languageCode, convertOrderToInvoiceAction, true, null, portalName); ConvertOrderToInvoiceActionLink = convertOrderToInvoiceActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, convertOrderToInvoiceActionLink); } if (action is DeactivateAction) { var deactivateAction = (DeactivateAction)action; if (!deactivateAction.IsConfigurationValid()) { return; } var deactivateActionLink = new DeactivateActionLink(portalContext, formActionMetadata, languageCode, deactivateAction, true, null, portalName); DeactivateActionLink = deactivateActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, deactivateActionLink); } if (action is ActivateAction) { var activateAction = (ActivateAction)action; if (!activateAction.IsConfigurationValid()) { return; } var activateActionLink = new ActivateActionLink(portalContext, formActionMetadata, languageCode, activateAction, true, null, portalName); ActivateActionLink = activateActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, activateActionLink); } if (action is ActivateQuoteAction) { var activateQuoteAction = (ActivateQuoteAction)action; if (!activateQuoteAction.IsConfigurationValid()) { return; } var activateQuoteActionLink = new ActivateQuoteActionLink(portalContext, formActionMetadata, languageCode, activateQuoteAction, true, null, portalName); ActivateQuoteActionLink = activateQuoteActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, activateQuoteActionLink); } if (action is SetOpportunityOnHoldAction) { var setOpportunityOnHoldAction = (SetOpportunityOnHoldAction)action; if (!setOpportunityOnHoldAction.IsConfigurationValid()) { return; } var setOpportunityOnHoldActionLink = new SetOpportunityOnHoldActionLink(portalContext, formActionMetadata, languageCode, setOpportunityOnHoldAction, true, null, portalName); SetOpportunityOnHoldActionLink = setOpportunityOnHoldActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, setOpportunityOnHoldActionLink); } if (action is ReopenOpportunityAction) { var reopenOpportunityAction = (ReopenOpportunityAction)action; if (!reopenOpportunityAction.IsConfigurationValid()) { return; } var reopenOpportunityActionLink = new ReopenOpportunityActionLink(portalContext, formActionMetadata, languageCode, reopenOpportunityAction, true, null, portalName); ReopenOpportunityActionLink = reopenOpportunityActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, reopenOpportunityActionLink); } if (action is CalculateOpportunityAction) { var calculateOpportunityAction = (CalculateOpportunityAction)action; if (!calculateOpportunityAction.IsConfigurationValid()) { return; } var calculateOpportunityActionLink = new CalculateOpportunityActionLink(portalContext, formActionMetadata, languageCode, calculateOpportunityAction, true, null, portalName); CalculateOpportunityActionLink = calculateOpportunityActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, calculateOpportunityActionLink); } if (action is WinOpportunityAction) { var winOpportunityAction = (WinOpportunityAction)action; if (!winOpportunityAction.IsConfigurationValid()) { return; } var winOpportunityActionLink = new WinOpportunityActionLink(portalContext, formActionMetadata, languageCode, winOpportunityAction, true, null, portalName); WinOpportunityActionLink = winOpportunityActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, winOpportunityActionLink); } if (action is LoseOpportunityAction) { var loseOpportunityAction = (LoseOpportunityAction)action; if (!loseOpportunityAction.IsConfigurationValid()) { return; } var loseOpportunityActionLink = new LoseOpportunityActionLink(portalContext, formActionMetadata, languageCode, loseOpportunityAction, true, null, portalName); LoseOpportunityActionLink = loseOpportunityActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, loseOpportunityActionLink); } if (action is GenerateQuoteFromOpportunityAction) { var generateQuoteFromOpportunityAction = (GenerateQuoteFromOpportunityAction)action; if (!generateQuoteFromOpportunityAction.IsConfigurationValid()) { return; } var generateQuoteFromOpportunityActionLink = new GenerateQuoteFromOpportunityActionLink(portalContext, formActionMetadata, languageCode, generateQuoteFromOpportunityAction, true, null, portalName); GenerateQuoteFromOpportunityActionLink = generateQuoteFromOpportunityActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, generateQuoteFromOpportunityActionLink); } if (action is UpdatePipelinePhaseAction) { var updatePipelinePhaseAction = (UpdatePipelinePhaseAction)action; if (!updatePipelinePhaseAction.IsConfigurationValid()) { return; } var updatePipelinePhaseActionLink = new UpdatePipelinePhaseActionLink(portalContext, formActionMetadata, languageCode, updatePipelinePhaseAction, true, null, portalName); UpdatePipelinePhaseActionLink = updatePipelinePhaseActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, updatePipelinePhaseActionLink); } }
private void SetFormActions(IPortalContext portalContext, FormActionMetadata formActionMetadata, int languageCode, string portalName = null, bool addSubmitButton = false, bool addNextPrevious = false) { var actions = formActionMetadata.Actions.OrderBy(a => a.ActionIndex).ToList(); if (addSubmitButton) { var submitActions = actions.Where(a => a is SubmitAction); if (!(submitActions.Any())) { var newSubmitAction = new SubmitAction() { ActionButtonAlignment = JsonConfiguration.ActionButtonAlignment.Left, ActionButtonPlacement = JsonConfiguration.ActionButtonPlacement.BelowForm, ActionButtonStyle = JsonConfiguration.ActionButtonStyle.ButtonGroup, ActionIndex = -1, ButtonCssClass = "btn-primary" }; actions.Insert(0, newSubmitAction); } } if (addNextPrevious && AutoGenerateSteps) { var nextActions = actions.Where(a => a is NextAction); if (!(nextActions.Any())) { var newNextAction = new NextAction() { ActionButtonAlignment = JsonConfiguration.ActionButtonAlignment.Left, ActionButtonPlacement = JsonConfiguration.ActionButtonPlacement.BelowForm, ActionButtonStyle = JsonConfiguration.ActionButtonStyle.ButtonGroup, ActionIndex = -1, ButtonCssClass = "btn btn-primary navbar-btn button next next-btn" }; actions.Insert(0, newNextAction); } var previousActions = actions.Where(a => a is PreviousAction); if (!(previousActions.Any())) { var newPreviousAction = new PreviousAction() { ActionButtonAlignment = JsonConfiguration.ActionButtonAlignment.Left, ActionButtonPlacement = JsonConfiguration.ActionButtonPlacement.BelowForm, ActionButtonStyle = JsonConfiguration.ActionButtonStyle.ButtonGroup, ActionIndex = -2, ButtonCssClass = "btn btn-default navbar-btn button previous previous-btn" }; actions.Insert(0, newPreviousAction); } } var topItemActionLinks = new List <ViewActionLink>(); var bottomItemActionLinks = new List <ViewActionLink>(); foreach (var action in actions) { if (action is WorkflowAction) { var workflowAction = (WorkflowAction)action; if (!workflowAction.IsConfigurationValid()) { continue; } var workflowActionLink = new WorkflowActionLink(portalContext, new EntityReference("workflow", workflowAction.WorkflowId), formActionMetadata, languageCode, workflowAction, true, null, portalName); AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, workflowActionLink); } if (action is DeleteAction) { var deleteAction = (DeleteAction)action; if (!deleteAction.IsConfigurationValid()) { continue; } var deleteActionLink = new DeleteActionLink(portalContext, formActionMetadata, languageCode, deleteAction, true, null, portalName); DeleteActionLink = deleteActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, deleteActionLink); } if (action is SubmitAction) { var submitAction = (SubmitAction)action; if (!submitAction.IsConfigurationValid()) { continue; } var submitActionLink = new SubmitActionLink(portalContext, languageCode, submitAction, true, null, portalName); SubmitActionLink = submitActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, submitActionLink); } if (action is PreviousAction) { var previousAction = (PreviousAction)action; if (!previousAction.IsConfigurationValid()) { continue; } var previousActionLink = new PreviousActionLink(portalContext, languageCode, previousAction, true, null, portalName); PreviousActionLink = previousActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, previousActionLink); } if (action is NextAction) { var nextAction = (NextAction)action; if (!nextAction.IsConfigurationValid()) { continue; } var nextActionLink = new NextActionLink(portalContext, languageCode, nextAction, true, null, portalName); NextActionLink = nextActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, nextActionLink); } if (action is CreateRelatedRecordAction) { var createRelatedRecordAction = (CreateRelatedRecordAction)action; if (!createRelatedRecordAction.IsConfigurationValid()) { continue; } var createRelatedRecordActionLink = new CreateRelatedRecordActionLink(portalContext, formActionMetadata, languageCode, createRelatedRecordAction, true, portalName); CreateRelatedRecordActionLink = createRelatedRecordActionLink; AddActionLinkToSet(topItemActionLinks, bottomItemActionLinks, createRelatedRecordActionLink); } SetSpecialMessageActions(portalContext, formActionMetadata, languageCode, action, topItemActionLinks, bottomItemActionLinks, portalName); } TopFormActionLinks = topItemActionLinks; BottomFormActionLinks = bottomItemActionLinks; }