{"version":3,"file":"actionUtils.mjs","names":["useHistory","useSnackbar","useTranslation","ConfigService","NodeActionEnums","SplitScreenTypeEnums","getSuccessAction","useActionStore","useInquiryStore","apiMutate","getPathParametersObj","isValidURL","url","urlPattern","test","useHandleAction","$","_c","history","t","enqueueSnackbar","closeSnackbar","t0","successAction","selectedNode","_temp","setWorkflowMap","_temp2","setWorkflowStarting","_temp3","executeStartWorkflow","_temp4","getApiMethod","_temp5","t1","handleAction","dispatch","action","state_2","executeAction","apiCatalogId","entityAttributes","actionData","currentContainerId","actionName","name","actionValue","value","parameters","entityName","bb24","actionTypeId","Open_External_Link","window","open","Redirect","location","href","push","Create","type","sideSheet","Update","Delete","modal","title","Retrieve","splitScreen","Entity","Open_Page_Split_Screen","pageContainerSplitScreen","Page","pageSplitScreen","Open_Shell_Split_Screen","Open_Notes","Notes","Open_Reminders","Reminders","Execute_Api","data","length","nodeObj","removeAttributes","filter","_temp6","forEach","att","apiMethod","pathParamValues","pathParametersDefinition","requestBody","then","res","anchorOrigin","vertical","horizontal","catch","res_0","message","variant","Start_Workflow","response","e","status","playId","workflow","inWorkflowMode","currentWorkflowPlayId","containerId","pathname","state","label","Execute_Function","execute","state_0","state_1","workflowId","payload","builderV1ApiUrl","method","apiMethodId","integrationV1ApiUrl","p","extendedProperties","childEntity"],"sources":["../../../src/actions/utils/actionUtils.js"],"sourcesContent":["import { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../../configService';\nimport {\n  NodeActionEnums,\n  SplitScreenTypeEnums\n} from '../../enums/unitySystemEnums';\nimport { getSuccessAction } from '../../UI/SuccessAction';\nimport { useActionStore } from '../../stores/actionStore';\nimport { useInquiryStore } from '../../stores/inquiryStore';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { getPathParametersObj } from '../../utilities/maintenanceEngine/CrudBrowserUtilities';\n\nfunction isValidURL(url) {\n  // Regular expression for URL validation\n  const urlPattern = /^(ftp|http|https):\\/\\/[^ \"]+$/;\n  return urlPattern.test(url);\n}\n\nexport const useHandleAction = () => {\n  const history = useHistory();\n  const { t } = useTranslation();\n  const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n  const successAction = getSuccessAction(closeSnackbar);\n  const selectedNode = useActionStore((state) => state.selectedNode);\n  const setWorkflowMap = useInquiryStore((state) => state.setWorkflowMap);\n  const setWorkflowStarting = useInquiryStore(\n    (state) => state.setWorkflowStarting\n  );\n\n  const executeStartWorkflow = async (workflowId, payload) =>\n    apiMutate(\n      ConfigService.builderV1ApiUrl,\n      `workflow/${workflowId}/start`,\n      {\n        method: 'post'\n      },\n      { data: payload }\n    );\n\n  const getApiMethod = async (apiMethodId) =>\n    apiMutate(\n      ConfigService.integrationV1ApiUrl,\n      `apimethod/${apiMethodId}`,\n      {\n        method: 'get'\n      }\n    );\n\n  const handleAction = async (\n    dispatch,\n    action,\n    state,\n    executeAction,\n    apiCatalogId,\n    entityAttributes,\n    actionData,\n    currentContainerId\n  ) => {\n    if (!action) {\n      return;\n    }\n\n    const actionName = action.name;\n    let actionValue = action.value;\n    if (action?.parameters?.entityName) {\n      actionValue +=\n        '?entityName=' +\n        action.parameters.entityName +\n        '&apiCatalogId=' +\n        apiCatalogId;\n    }\n\n    switch (action.actionTypeId) {\n      case NodeActionEnums.Open_External_Link:\n        window.open(actionValue, '_blank');\n        break;\n      case NodeActionEnums.Redirect:\n        // if the url is valid, redirect to that url, if its not valid, assume its a path redirect on the same origin\n        if (isValidURL(actionValue)) {\n          window.location.href = actionValue;\n        } else {\n          history.push(actionValue);\n        }\n        break;\n      case NodeActionEnums.Create:\n        if (dispatch) {\n          dispatch({\n            type: 'OPEN_SIDESHEET',\n            sideSheet: { action: action, open: true }\n          });\n        }\n        break;\n      case NodeActionEnums.Update:\n        if (dispatch) {\n          dispatch({\n            type: 'OPEN_SIDESHEET',\n            sideSheet: { action: action, open: true }\n          });\n        }\n        break;\n      case NodeActionEnums.Delete:\n        if (dispatch) {\n          dispatch({\n            type: 'OPEN_MODAL',\n            modal: { action: action, open: true, title: 'Delete ' }\n          });\n        }\n        break;\n      case NodeActionEnums.Retrieve:\n        if (dispatch) {\n          if (currentContainerId) {\n            break;\n          } else {\n            dispatch({\n              type: 'OPEN_SPLIT_SCREEN',\n              splitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Entity\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Open_Page_Split_Screen:\n        if (dispatch) {\n          if (!!selectedNode) {\n            dispatch({\n              type: 'OPEN_PAGE_CONTAINER_SPLIT_SCREEN',\n              pageContainerSplitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Page\n              }\n            });\n          } else {\n            dispatch({\n              type: 'OPEN_PAGE_SPLIT_SCREEN',\n              pageSplitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Page\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Open_Shell_Split_Screen:\n        if (dispatch) {\n          if (currentContainerId) {\n            break;\n          } else {\n            dispatch({\n              type: 'OPEN_SPLIT_SCREEN',\n              splitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Page\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Open_Notes:\n        if (dispatch) {\n          if (currentContainerId) {\n            break;\n          } else {\n            dispatch({\n              type: 'OPEN_SPLIT_SCREEN',\n              splitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Notes\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Open_Reminders:\n        if (dispatch) {\n          if (currentContainerId) {\n            break;\n          } else {\n            dispatch({\n              type: 'OPEN_SPLIT_SCREEN',\n              splitScreen: {\n                action: action,\n                open: true,\n                type: SplitScreenTypeEnums.Reminders\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Execute_Api:\n        if (executeAction && action?.value) {\n          let data = {};\n\n          if (\n            entityAttributes.length > 0 &&\n            (selectedNode?.nodeObj || actionData)\n          ) {\n            // actionData will be used as Request Data first as it is directly passed into function\n            if (actionData) {\n              data = { ...actionData };\n            } else {\n              data = { ...selectedNode?.nodeObj };\n            }\n            const removeAttributes = entityAttributes.filter(\n              (p) => p?.extendedProperties?.childEntity\n            );\n            removeAttributes.forEach((att) => {\n              if (att['name'] in data || 'serializeFields' in data) {\n                delete data[att['name']];\n              }\n            });\n          }\n          const apiMethod = await getApiMethod(action?.value);\n          const pathParamValues = getPathParametersObj(\n            apiMethod?.data?.pathParametersDefinition,\n            data\n          );\n\n          const response = executeAction(\n            {\n              data: { requestBody: data, ...pathParamValues }\n            },\n            action.value\n          )\n            .then((res) => {\n              enqueueSnackbar(\n                t(`${action?.name} api has been executed successfully.`),\n                {\n                  anchorOrigin: {\n                    vertical: 'top',\n                    horizontal: 'center'\n                  },\n                  action: successAction\n                }\n              );\n            })\n            .catch((res) => {\n              enqueueSnackbar(res.message, {\n                variant: 'error',\n                anchorOrigin: {\n                  vertical: 'top',\n                  horizontal: 'center'\n                }\n              });\n            });\n        } else {\n          enqueueSnackbar(t(`Unable to execute ${actionName} action.`), {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          });\n        }\n        break;\n      case NodeActionEnums.Start_Workflow:\n        setWorkflowStarting(true);\n        // actionValue will be workflowId where we can call Start workflow\n        // actionData is the selected nodeObj used as payload\n        const response = await executeStartWorkflow(\n          actionValue,\n          actionData || {}\n        ).catch((e) => {\n          enqueueSnackbar(t(`Unable to Start Workflow`), {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          });\n        });\n        setWorkflowStarting(false);\n        if (response.status === 200) {\n          const playId = response.data;\n          // if selectedNode it means we're in Inquiry\n          if (selectedNode) {\n            const workflow = {\n              inWorkflowMode: true,\n              currentWorkflowPlayId: playId\n            };\n            const containerId = currentContainerId || 0;\n            setWorkflowMap({ [containerId]: workflow });\n          } else {\n            history.push({\n              pathname: `/workflowtask/${playId}?taskId=${''}`,\n              state: {\n                label: t('Workflow')\n              }\n            });\n          }\n        }\n        break;\n      case NodeActionEnums.Execute_Function:\n        !!actionData?.execute && actionData.execute();\n\n        break;\n      default:\n        break;\n    }\n  };\n  return { handleAction };\n};\n"],"mappings":"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"}