{"version":3,"file":"DynamicTransactionDomainForm.mjs","names":["React","useEffect","useState","useCallback","useMemo","apiMutate","useAxiosMutate","getSanitizedName","Form","FormSpy","CardinalityTypeEnums","TransactionUiActionTypeEnums","DetailsFormFields","AmbientCard","LinearProgress","useHandleAxiosSnackbar","useTranslation","ConfigService","DynamicTransactionDomainForm","props","transaction","formRef","domainName","transactionTypeId","transactionUiActionType","setHasUnsavedChanges","onSubmitSuccess","refetchTransaction","catalogObject","entityAttributes","setEntityAttributes","fullyQualifiedName","entityBusinessKey","split","handleErrorSnackbar","handleSuccessSnackbar","t","data","udpObjectInfo","fetchUdpObjectInfo","productV1ApiUrl","method","eagerLoad","pageNumber","pageSize","filterElements","searchField","searchOperator","searchValue","updateFieldInfo","tableEntries","catalogObjectFieldInfo","fkFieldInfo","fkDomainName","updatedFields","type","options","updatedFieldInfo","index","findIndex","f","name","toLowerCase","mergeCatalogObjectInfoFieldInfo","entityCatalogObjectInfo","filteredEntityFieldInfo","catalogObjectFieldInfoCombo","map","entityCatalogObject","matchingEntityFieldInfo","find","fieldInfo","formattedFieldName","slice","additional_fields","hidden","properties","maintainenceConfig","associationLabel","isPrimaryKey","filterOutManyToManyRelationships","CatalogObjectInfo","filter","cardinality","extendedProperties","childEntityAssoc","Cardinality","undefined","Many_To_Many","One_To_One","updateFkFields","catalogObjectInfo","childEntityAssociation","foreignKeyAssociationFields","Keys","fieldsInAssociationToIgnore","Promise","all","fkFieldName","includes","field","TargetType","getTableEntriesResp","length","error","Error","defaultValue","filterAdjustEntityAttributes","entityObjectInfoResponse","entityObjectInfo","pageList","objectFieldInfo","isDefaultVisible","childEntity","mergedFieldInfo","then","filteredResp","executeSaveChanges","transactionId","executeCreateTransactionAndDomain","onSubmit","values","request","response","successMessage","errorMessage","Render_Transaction_Details_Page","Render_Create_Transaction_Page","status","apiResult","actionApiResult","isSuccessful","success","current","form","restart","fieldAttributes","dirty"],"sources":["../../../../../src/udp/pages/UdpTransactionsPage/components/DynamicTransactionDomainForm.jsx"],"sourcesContent":["import React, { useEffect, useState, useCallback, useMemo } from 'react';\nimport { apiMutate, useAxiosMutate } from '../../../../utilities';\nimport { getSanitizedName } from '../../../../utilities/entities/entityUtilities';\nimport { Form, FormSpy } from '../../../../utilities/form';\nimport {\n  CardinalityTypeEnums,\n  TransactionUiActionTypeEnums\n} from '../../../../enums';\nimport DetailsFormFields from './DynamicTransactionDomainFormFields';\nimport { AmbientCard } from '../../../../UI/surfaces/cards/AmbientCard';\nimport { LinearProgress } from '@material-ui/core';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../../../../configService';\n\nconst DynamicTransactionDomainForm = (props) => {\n  const {\n    transaction,\n    formRef,\n    domainName,\n    transactionTypeId,\n    transactionUiActionType,\n    setHasUnsavedChanges,\n    onSubmitSuccess,\n    refetchTransaction,\n    catalogObject\n  } = props;\n  const [entityAttributes, setEntityAttributes] = useState(null);\n\n  const fullyQualifiedName = transaction?.entityBusinessKey?.split('|')[0];\n\n  const { handleErrorSnackbar, handleSuccessSnackbar } =\n    useHandleAxiosSnackbar();\n  const { t } = useTranslation();\n\n  const [{ data: udpObjectInfo }, fetchUdpObjectInfo] = useAxiosMutate(\n    ConfigService.productV1ApiUrl,\n    `UdpObjectInfo/search`,\n    {\n      method: 'post',\n      data: {\n        eagerLoad: true,\n        pageNumber: 1,\n        pageSize: 50,\n        filterElements: [\n          {\n            searchField: 'sanitizedName',\n            searchOperator: '=',\n            searchValue: fullyQualifiedName\n              ? getSanitizedName(fullyQualifiedName)\n              : domainName\n          }\n        ]\n      }\n    }\n  );\n\n  const updateFieldInfo = (\n    tableEntries,\n    catalogObjectFieldInfo,\n    fkFieldInfo,\n    fkDomainName\n  ) => {\n    let updatedFields = {\n      type: 'array',\n      options: tableEntries,\n      domainName: fkDomainName\n    };\n    const updatedFieldInfo = { ...fkFieldInfo, ...updatedFields };\n    const index = catalogObjectFieldInfo.findIndex(\n      (f) => f.name.toLowerCase() === fkFieldInfo.name.toLowerCase()\n    );\n    if (index != -1) {\n      catalogObjectFieldInfo[index] = updatedFieldInfo;\n    }\n  };\n\n  const mergeCatalogObjectInfoFieldInfo = useCallback(\n    (entityCatalogObjectInfo, filteredEntityFieldInfo) => {\n      let catalogObjectFieldInfoCombo = entityCatalogObjectInfo.map(\n        (entityCatalogObject) => {\n          let matchingEntityFieldInfo = filteredEntityFieldInfo.find(\n            (fieldInfo) => {\n              let formattedFieldName =\n                fieldInfo.name.slice(0, 1).toLowerCase() +\n                fieldInfo.name.slice(1);\n              if (fieldInfo.name == 'ID') {\n                formattedFieldName = formattedFieldName.toLowerCase();\n              }\n\n              return formattedFieldName == entityCatalogObject.name;\n            }\n          );\n          if (matchingEntityFieldInfo) {\n            let additional_fields = {\n              hidden:\n                matchingEntityFieldInfo.properties.maintainenceConfig.hidden,\n              associationLabel:\n                matchingEntityFieldInfo.properties.maintainenceConfig\n                  .associationLabel,\n              isPrimaryKey: matchingEntityFieldInfo.isPrimaryKey\n            };\n            return {\n              ...entityCatalogObject,\n              ...additional_fields\n            };\n          } else {\n            return entityCatalogObject;\n          }\n        }\n      );\n\n      return catalogObjectFieldInfoCombo;\n    },\n    []\n  );\n\n  const filterOutManyToManyRelationships = (CatalogObjectInfo) => {\n    let entityCatalogObjectInfo = CatalogObjectInfo.filter((catalogObject) => {\n      const cardinality =\n        catalogObject.extendedProperties?.childEntityAssoc?.Cardinality;\n      if (cardinality != undefined) {\n        return (\n          cardinality != CardinalityTypeEnums.Many_To_Many &&\n          cardinality != CardinalityTypeEnums.One_To_One &&\n          catalogObject.name.toLowerCase() != 'businessobjectkey'\n        );\n      } else {\n        return catalogObject.name.toLowerCase() != 'businessobjectkey';\n      }\n    });\n    return entityCatalogObjectInfo;\n  };\n\n  const updateFkFields = useCallback(\n    async (entityCatalogObjectInfo, catalogObjectInfo) => {\n      const childEntityAssociation =\n        catalogObjectInfo.extendedProperties.childEntityAssoc;\n      const cardinality = childEntityAssociation.Cardinality;\n      if (cardinality != undefined) {\n        const foreignKeyAssociationFields =\n          childEntityAssociation.Keys[0].split(',');\n        let fieldsInAssociationToIgnore = [\n          'id',\n          'businessobjectkey',\n          'entitybusinesskey'\n        ];\n        return Promise.all(\n          foreignKeyAssociationFields.map(async (fkFieldName) => {\n            if (\n              fkFieldName.toLowerCase() != 'id' &&\n              !fieldsInAssociationToIgnore.includes(fkFieldName.toLowerCase())\n            ) {\n              let fkFieldInfo = entityCatalogObjectInfo.find(\n                (field) => field.name.toLowerCase() == fkFieldName.toLowerCase()\n              );\n              const fkDomainName = getSanitizedName(\n                childEntityAssociation.TargetType\n              );\n              try {\n                const getTableEntriesResp = await apiMutate(\n                  ConfigService.productV1ApiUrl,\n                  `${fkDomainName}`,\n                  { method: 'get' }\n                );\n\n                if (getTableEntriesResp.data.length > 0 && fkFieldInfo) {\n                  updateFieldInfo(\n                    getTableEntriesResp.data,\n                    entityCatalogObjectInfo,\n                    fkFieldInfo,\n                    fkDomainName\n                  );\n                }\n              } catch (error) {\n                handleErrorSnackbar(\n                  new Error(\n                    t('transactions.sidesheet.form.fieldInfoError', {\n                      defaultValue:\n                        'Error finiding field information! Please try again.'\n                    })\n                  )\n                );\n              }\n            }\n          })\n        );\n      }\n    },\n    [handleErrorSnackbar, t]\n  );\n\n  const filterAdjustEntityAttributes = useCallback(\n    async (catalogObjectInfo) => {\n      let entityCatalogObjectInfo = catalogObjectInfo;\n\n      entityCatalogObjectInfo = filterOutManyToManyRelationships(\n        entityCatalogObjectInfo\n      );\n\n      const entityObjectInfoResponse = await fetchUdpObjectInfo();\n      const entityObjectInfo = entityObjectInfoResponse.data.pageList[0];\n      let filteredEntityFieldInfo = entityObjectInfo.objectFieldInfo.filter(\n        (fieldInfo) => fieldInfo.properties.isDefaultVisible\n      );\n\n      await Promise.all(\n        entityCatalogObjectInfo.map((catalogObjectInfo) => {\n          return updateFkFields(entityCatalogObjectInfo, catalogObjectInfo);\n        })\n      );\n\n      entityCatalogObjectInfo = entityCatalogObjectInfo.filter(\n        (catalogObject) => !catalogObject.extendedProperties.childEntity\n      );\n\n      let mergedFieldInfo = mergeCatalogObjectInfoFieldInfo(\n        entityCatalogObjectInfo,\n        filteredEntityFieldInfo\n      );\n      return mergedFieldInfo;\n    },\n    [fetchUdpObjectInfo, mergeCatalogObjectInfoFieldInfo, updateFkFields]\n  );\n\n  useEffect(() => {\n    if (catalogObject) {\n      filterAdjustEntityAttributes(catalogObject.properties).then(\n        (filteredResp) => {\n          setEntityAttributes(filteredResp);\n        }\n      );\n    }\n  }, [filterAdjustEntityAttributes, catalogObject]);\n\n  const executeSaveChanges = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransaction/${transaction?.transactionId}/saveChanges`,\n        {\n          method: 'put'\n        },\n        data\n      ),\n    [transaction?.transactionId]\n  );\n\n  const executeCreateTransactionAndDomain = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `udpTransaction/transactionType/${transactionTypeId}/create`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    [transactionTypeId]\n  );\n\n  const onSubmit = useCallback(\n    async (values) => {\n      try {\n        const request = { data: values };\n        let response = null;\n        let successMessage = '';\n        let errorMessage = '';\n        if (\n          transactionUiActionType ==\n          TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n        ) {\n          response = await executeSaveChanges({ data: values });\n          successMessage = t('transactions.sidesheet.saveSuccess', {\n            defaultValue: 'Transaction has been saved successfully'\n          });\n          errorMessage = t('transactions.sidesheet.saveError', {\n            defaultValue: 'Error saving Transaction. Please try again later.'\n          });\n        } else if (\n          transactionUiActionType ==\n          TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n        ) {\n          response = await executeCreateTransactionAndDomain(request);\n          successMessage = t('transactions.sidesheet.createSuccess', {\n            defaultValue: 'Transaction has been created successfully'\n          });\n          errorMessage = t('transactions.sidesheet.createError', {\n            defaultValue: 'Error creating Transaction. Please try again later.'\n          });\n        }\n\n        const { status, data } = response || {};\n        const apiResult = data?.actionApiResult;\n\n        if (status === 200) {\n          // Success condition: No actionApiResult OR actionApiResult says success is true\n          const isSuccessful = !apiResult || apiResult.success;\n\n          if (isSuccessful) {\n            handleSuccessSnackbar(successMessage);\n            onSubmitSuccess?.(response);\n          } else if (apiResult?.errorMessage) {\n            handleErrorSnackbar(new Error(apiResult.errorMessage));\n          }\n        } else {\n          // Handle non-200 status codes\n          handleErrorSnackbar(new Error(errorMessage));\n        }\n      } catch (error) {\n        handleErrorSnackbar(error);\n      } finally {\n        if (setHasUnsavedChanges) {\n          formRef.current?.form?.restart(values);\n          setHasUnsavedChanges(false);\n        }\n        if (refetchTransaction) {\n          refetchTransaction();\n        }\n      }\n    },\n    [\n      executeSaveChanges,\n      executeCreateTransactionAndDomain,\n      handleSuccessSnackbar,\n      handleErrorSnackbar,\n      t,\n      transactionUiActionType,\n      setHasUnsavedChanges,\n      formRef,\n      onSubmitSuccess,\n      refetchTransaction\n    ]\n  );\n\n  const fieldAttributes = useMemo(() => {\n    if (!entityAttributes) {\n      return [];\n    }\n    return entityAttributes;\n  }, [entityAttributes]);\n\n  return fieldAttributes.length == 0 ? (\n    <LinearProgress />\n  ) : (\n    <AmbientCard fullWidth={true}>\n      <Form onSubmit={onSubmit} ref={formRef}>\n        <FormSpy subscription={{ dirty: true }}>\n          {({ dirty }) => {\n            if (setHasUnsavedChanges) {\n              setHasUnsavedChanges(dirty);\n            }\n          }}\n        </FormSpy>\n        <DetailsFormFields\n          transaction={transaction}\n          fieldAttributes={fieldAttributes}\n          transactionTypeId={transactionTypeId}\n        />\n      </Form>\n    </AmbientCard>\n  );\n};\n\nexport default DynamicTransactionDomainForm;\n"],"mappings":"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"}