{"version":3,"file":"useUdpExport.mjs","names":["useCallback","useEffect","useState","executeQueryAdHoc","executeQueryWithParameters","usePromotedMethodEntity","getSanitizedName","useUdpExport","apiCatalogId","productId","entity","setEntity","searchObject","setSearchObject","fileFormat","setFileFormat","numRowsToExport","setNumRowsToExport","validSearch","setValidSearch","errorList","setErrorList","activeExportJob","setActiveExportJob","exportLoading","setExportLoading","fileResultData","setFileResultData","data","selectedEntity","loading","entityLoading","udpJobEntity","refetchActiveJobData","unityBaseGetMethod","apiMethodId","id","then","res","catch","err","addErrorIfNotExists","refetchfileResultData","unityBaseGetFileResultMethod","JobId","clearParameters","updateExportParameters","message","severity","prev","exists","some","error","initialSearchWithParams","pageSize","unityBaseSearchMethod","total","createExport","unityBaseExportMethod","requestBody","debug","exportAcrossAssociations","exportOnAllAssociations","exportSiblings","search","isValid","forEach","item","statusId","intervalId","setInterval","clearInterval","handleFileDownload","link","document","createElement","href","download","body","appendChild","click","removeChild"],"sources":["../../../src/udp/export/useUdpExport.js"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const useUdpExport = (apiCatalogId, productId) => {\n  const [entity, setEntity] = useState();\n  const [searchObject, setSearchObject] = useState();\n  const [fileFormat, setFileFormat] = useState('.XLSX');\n  const [numRowsToExport, setNumRowsToExport] = useState(null);\n  const [validSearch, setValidSearch] = useState(false);\n  const [errorList, setErrorList] = useState([]);\n  const [activeExportJob, setActiveExportJob] = useState();\n  const [exportLoading, setExportLoading] = useState(false);\n  const [fileResultData, setFileResultData] = useState();\n\n  const { data: selectedEntity, loading: entityLoading } =\n    usePromotedMethodEntity(entity, true, apiCatalogId, productId);\n  const { data: udpJobEntity } = usePromotedMethodEntity(\n    'udpJob',\n    true,\n    apiCatalogId,\n    productId\n  );\n\n  const refetchActiveJobData = useCallback(async () => {\n    if (udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n      await executeQueryWithParameters(\n        {\n          data: { id: activeExportJob?.id }\n        },\n        udpJobEntity?.unityBaseGetMethod?.apiMethodId\n      )\n        .then((res) => {\n          setActiveExportJob(res.data);\n        })\n        .catch((err) => {\n          addErrorIfNotExists(\n            'jobstatus',\n            'Error getting job status ',\n            'error'\n          );\n        });\n    }\n  }, [activeExportJob?.id, udpJobEntity?.unityBaseGetMethod?.apiMethodId]);\n\n  const refetchfileResultData = useCallback(async () => {\n    if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n      await executeQueryWithParameters(\n        {\n          data: { JobId: activeExportJob?.id }\n        },\n        udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n      )\n        .then((res) => {\n          setFileResultData(res.data);\n        })\n        .catch((err) => {\n          addErrorIfNotExists('fileError', 'Error getting file ', 'error');\n        });\n    }\n  }, [\n    activeExportJob?.id,\n    udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n  ]);\n\n  const clearParameters = useCallback(() => {\n    setEntity(null);\n    setSearchObject(null);\n    setNumRowsToExport(null);\n    setActiveExportJob(null);\n    setErrorList([]);\n  }, []);\n\n  const updateExportParameters = useCallback((entity, searchObject) => {\n    setEntity(entity);\n    setSearchObject(searchObject);\n  }, []);\n\n  const addErrorIfNotExists = (id, message, severity = 'error') => {\n    setErrorList((prev) => {\n      const exists = prev.some((error) => error.id === id);\n      if (!exists) {\n        return [...prev, { id, message, severity }];\n      }\n      return prev;\n    });\n  };\n\n  const initialSearchWithParams = useCallback(async () => {\n    await executeQueryAdHoc(\n      {\n        data: {\n          ...searchObject,\n          pageSize: 1\n        }\n      },\n      selectedEntity?.unityBaseSearchMethod?.apiMethodId\n    )\n      .then((res) => {\n        setNumRowsToExport(res?.data?.total);\n      })\n      .catch((err) => {\n        addErrorIfNotExists(\n          'searchObject',\n          'Error fetching row count',\n          'error'\n        );\n      });\n  }, [searchObject, selectedEntity]);\n\n  const createExport = useCallback(async () => {\n    if (selectedEntity?.unityBaseExportMethod?.apiMethodId) {\n      setExportLoading(true);\n      await executeQueryWithParameters(\n        {\n          data: {\n            requestBody: {\n              debug: true,\n              exportAcrossAssociations: false,\n              exportOnAllAssociations: false,\n              exportSiblings: false,\n              search: searchObject\n            }\n          }\n        },\n        selectedEntity?.unityBaseExportMethod?.apiMethodId\n      )\n        .then((res) => {\n          setActiveExportJob(res?.data);\n          setExportLoading(false);\n        })\n        .catch((err) => {\n          addErrorIfNotExists(\n            'exportRequest',\n            'Error creating the export job',\n            'error'\n          );\n          setExportLoading(false);\n        });\n    }\n  }, [searchObject, selectedEntity?.unityBaseExportMethod?.apiMethodId]);\n\n  useEffect(() => {\n    if (!entityLoading) {\n      if (selectedEntity?.unityBaseSearchMethod === null) {\n        addErrorIfNotExists(\n          'search',\n          `${getSanitizedName(entity)}'s search method must be promoted`,\n          'error'\n        );\n      } else {\n        initialSearchWithParams();\n      }\n      if (selectedEntity?.unityBaseExportMethod === null) {\n        addErrorIfNotExists(\n          'export',\n          `${getSanitizedName(entity)}'s export method must be promoted`,\n          'error'\n        );\n      }\n    }\n  }, [initialSearchWithParams, selectedEntity, entity, entityLoading]);\n\n  useEffect(() => {\n    if (entity) {\n      if (\n        udpJobEntity &&\n        !udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n      ) {\n        addErrorIfNotExists(\n          'fileResultGet',\n          `UdpJob's GetFileResult must be promoted to download the file`,\n          'warning'\n        );\n      }\n\n      if (udpJobEntity && !udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n        addErrorIfNotExists(\n          'fileBaseGet',\n          `UdpJob's Get method must be promoted to view job status`,\n          'warning'\n        );\n      }\n    }\n  }, [entity, udpJobEntity]);\n\n  useEffect(() => {\n    let isValid = true;\n    errorList?.forEach((item) => {\n      if (item.severity === 'error') {\n        isValid = false;\n      }\n    });\n    setValidSearch(isValid);\n  }, [errorList]);\n\n  useEffect(() => {\n    if (\n      !activeExportJob ||\n      activeExportJob?.statusId === 3 ||\n      activeExportJob?.statusId === 4\n    )\n      return;\n\n    const intervalId = setInterval(() => {\n      refetchActiveJobData();\n    }, 5000);\n\n    return () => clearInterval(intervalId);\n  }, [activeExportJob, refetchActiveJobData]);\n\n  useEffect(() => {\n    if (activeExportJob?.statusId === 3) {\n      refetchfileResultData();\n    }\n  }, [activeExportJob?.statusId, refetchfileResultData]);\n\n  const handleFileDownload = useCallback(() => {\n    if (fileResultData?.link) {\n      const link = document.createElement('a');\n      link.href = fileResultData?.link;\n      link.download = '';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }, [fileResultData?.link]);\n\n  return {\n    updateExportParameters,\n    createExport,\n    entity,\n    searchObject,\n    fileFormat,\n    numRowsToExport,\n    validSearch,\n    errorList,\n    activeExportJob,\n    exportLoading,\n    handleFileDownload,\n    clearParameters\n  };\n};\n"],"mappings":"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"}