{"version":3,"file":"EditTransaction.mjs","names":["React","useState","useRef","useCallback","useMemo","useEffect","Divider","SideSheet","UdpTabPanel","UdpTabs","useTranslation","allowedExtensions","MAX_FILE_SIZE_MB","EditTransactionHeaderItem","FluentButton","WorkflowActions","TransactionTimeline","TransactionAttachments","TransactionNotes","TRANSACTION_TAB","TransactionUiActionTypeEnums","UdpTransactionCustomPage","EditTransactionDetailsFooterItem","ConfigService","useTransactionEngine","DynamicTransactionDomainForm","UdpTransactionAttachmentUploader","uploadTransactionAttachments","apiMutate","useAxiosGet","useAxiosMutate","useSnackbar","TransactionNoteForm","FluentIcon","AddIcon","EditTransaction","props","transaction","initialTransaction","transactionTypeId","transactionIsClosed","openInnerSidesheetState","setOpenInnerSidesheetState","refreshGridData","closeSideSheet","setSidesheetLoading","setHasUnsavedChanges","domainName","currentAttachments","setCurrentAttachments","attachmentProgress","transactionAttachmentTypes","defaultAttachmentTypeCode","transactionAttachments","setTransactionAttachments","filePreview","setFilePreview","additionalPageParms","hideSaveChanges","catalogObject","t","selectedTab","setSelectedTab","setTransaction","refreshNotes","setRefreshNotes","data","noteTypes","loading","fetchNoteTypesLoading","productV1ApiUrl","getUiActionRenderParameters","transactionTypeStatusColorsMap","refetchTransaction","response","transactionId","method","status","transactionTimelineRef","current","refresh","formRef","transactionNoteFormRef","handleNoteFormSubmit","handleSubmit","handleNoteFormReset","form","reset","handleSaveSuccess","handleSaveChanges","submit","transactionAttachmentsData","fetchTransactionAttachmentsLoading","fetchTransactionAttachments","pageSize","filterElements","searchField","searchValue","searchOperator","enqueueSnackbar","getAttachments","pageList","error","console","message","defaultValue","variant","anchorOrigin","vertical","horizontal","tabNames","headerItemInfo","items","label","statusChip","udpTransactionUdpTransactionTypeStatus","name","currentRevisionNo","push","value","handleUploadAttachments","entries","uploaded","failed","length","innerSidesheetList","open","workflowAction","closeSheet","workflowActions","title","children","attachments","notes","buttonLabel","buttonTwoLabel","buttonTwoAction","onSubmit","businessObjectKey","transactionDetailPageId","Render_Transaction_Details_Page","pageId","map","headerItem","tabIndex","tabName","DETAILS","HISTORY","ATTACHMENTS","NOTES","item","buttonOneDisabled"],"sources":["../../../../../src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.jsx"],"sourcesContent":["import React, {\n  useState,\n  useRef,\n  useCallback,\n  useMemo,\n  useEffect\n} from 'react';\n\nimport { Divider, SideSheet, UdpTabPanel } from '../../../../UI';\nimport { UdpTabs } from '../../../../UI/navigation/tabs/UdpTabs';\nimport { useTranslation } from 'react-i18next';\nimport {\n  allowedExtensions,\n  MAX_FILE_SIZE_MB\n} from '../../../../uploader/utils/allowedFileProperties';\n\nimport './EditTransaction.css';\nimport EditTransactionHeaderItem from './EditTransactionHeaderItem';\nimport { FluentButton } from '../../../../UI/inputs/buttons';\nimport WorkflowActions from './WorkflowActions';\nimport { TransactionTimeline } from '../components/transactionHistory/TransactionTimeline';\nimport { TransactionAttachments } from '../components/transactionAttachment/TransactionAttachments';\nimport { TransactionNotes } from '../components/transactionNote/TransactionNotes';\nimport { TRANSACTION_TAB } from './enum';\nimport { TransactionUiActionTypeEnums } from '../../../../enums';\nimport UdpTransactionCustomPage from '../components/UdpTransactionCustomPage';\nimport EditTransactionDetailsFooterItem from '../components/EditTransactionDetailsFooterItem';\nimport { ConfigService } from '../../../../configService';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport DynamicTransactionDomainForm from '../components/DynamicTransactionDomainForm';\nimport { UdpTransactionAttachmentUploader } from '../components/transactionAttachment/UdpTransactionAttachmentUploader';\nimport { uploadTransactionAttachments } from '../components/transactionAttachment/uploadTransactionAttachments';\nimport { apiMutate, useAxiosGet, useAxiosMutate } from '../../../../utilities';\nimport { useSnackbar } from 'notistack';\nimport { TransactionNoteForm } from '../components/transactionNote/TransactionNoteForm';\nimport { FluentIcon } from '../../../../utilities/iconLibrary';\nimport { AddIcon } from '@fluentui/react-icons';\n\nconst EditTransaction = (props) => {\n  const {\n    transaction: initialTransaction,\n    transactionTypeId,\n    transactionIsClosed,\n    openInnerSidesheetState,\n    setOpenInnerSidesheetState,\n    refreshGridData,\n    closeSideSheet,\n    setSidesheetLoading,\n    setHasUnsavedChanges,\n    domainName,\n    currentAttachments,\n    setCurrentAttachments,\n    attachmentProgress,\n    transactionAttachmentTypes,\n    defaultAttachmentTypeCode,\n    transactionAttachments,\n    setTransactionAttachments,\n    filePreview,\n    setFilePreview,\n    additionalPageParms,\n    hideSaveChanges,\n    catalogObject\n  } = props;\n  const { t } = useTranslation();\n\n  const [selectedTab, setSelectedTab] = useState(0);\n  const [transaction, setTransaction] = useState(initialTransaction);\n  const [refreshNotes, setRefreshNotes] = useState(false);\n\n  const [{ data: noteTypes, loading: fetchNoteTypesLoading }] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpNoteType`,\n    {}\n  );\n\n  const { getUiActionRenderParameters, transactionTypeStatusColorsMap } =\n    useTransactionEngine(transactionTypeId);\n\n  const refetchTransaction = useCallback(async () => {\n    setSidesheetLoading(true);\n    const response = await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `udpTransaction/${initialTransaction?.transactionId}/full`,\n      {\n        method: 'get'\n      }\n    );\n    if (response?.status === 200) {\n      setTransaction(response.data);\n      transactionTimelineRef.current?.refresh();\n    }\n    setSidesheetLoading(false);\n  }, [initialTransaction?.transactionId, setSidesheetLoading]);\n\n  const formRef = useRef(null);\n  const transactionNoteFormRef = useRef(null);\n  const transactionTimelineRef = useRef();\n\n  const handleNoteFormSubmit = useCallback(() => {\n    transactionNoteFormRef.current?.handleSubmit?.();\n  }, []);\n\n  const handleNoteFormReset = useCallback(() => {\n    transactionNoteFormRef.current?.form?.reset?.();\n  }, []);\n\n  const handleSaveSuccess = useCallback(\n    (response) => {\n      refreshGridData();\n    },\n    [refreshGridData]\n  );\n\n  const handleSaveChanges = useCallback(async () => {\n    setSidesheetLoading(true);\n    await formRef.current?.form?.submit();\n    setSidesheetLoading(false);\n  }, [setSidesheetLoading, formRef]);\n\n  const [\n    {\n      data: transactionAttachmentsData,\n      loading: fetchTransactionAttachmentsLoading\n    },\n    fetchTransactionAttachments\n  ] = useAxiosMutate(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionAttachment/search`,\n    {\n      method: 'post',\n      data: {\n        pageSize: 50,\n        filterElements: [\n          {\n            searchField: 'TransactionId',\n            searchValue: transaction.transactionId,\n            searchOperator: '='\n          },\n          {\n            searchField: 'IsDeleted',\n            searchValue: 0,\n            searchOperator: '='\n          }\n        ]\n      }\n    }\n  );\n\n  const { enqueueSnackbar } = useSnackbar();\n\n  const getAttachments = useCallback(async () => {\n    try {\n      const response = await fetchTransactionAttachments();\n      setTransactionAttachments(response.data.pageList);\n      refetchTransaction();\n    } catch (error) {\n      console.error('Failed to fetch attachments:', error);\n      if (error?.message !== 'canceled') {\n        enqueueSnackbar(\n          t('transactions.sidesheet.attachmentFetchError', {\n            defaultValue:\n              'Attachment fetch failed: We encountered a system error. Please try again or contact support if the issue persists.'\n          }),\n          {\n            variant: 'error',\n            anchorOrigin: { vertical: 'top', horizontal: 'center' }\n          }\n        );\n      }\n    }\n  }, [\n    fetchTransactionAttachments,\n    enqueueSnackbar,\n    refetchTransaction,\n    setTransactionAttachments,\n    t\n  ]);\n\n  const tabNames = [\n    t('transactions.sidesheet.tabs.details', { defaultValue: 'Details' }),\n    t('transactions.sidesheet.tabs.history', { defaultValue: 'History' }),\n    t('transactions.sidesheet.tabs.attachments', {\n      defaultValue: 'Attachments'\n    }),\n    t('transactions.sidesheet.tabs.notes', { defaultValue: 'Notes' })\n  ];\n\n  const headerItemInfo = useMemo(() => {\n    const items = [\n      {\n        label: t('transactions.sidesheet.status', {\n          defaultValue: 'Status'\n        }),\n        statusChip: {\n          label: transaction.udpTransactionUdpTransactionTypeStatus?.name,\n          status:\n            transactionTypeStatusColorsMap[\n              transaction.udpTransactionUdpTransactionTypeStatus?.name\n            ] || 'default'\n        }\n      }\n    ];\n    if (transaction?.currentRevisionNo) {\n      items.push({\n        label: t('transactions.sidesheet.revision', {\n          defaultValue: 'Revision'\n        }),\n        value: `${transaction.currentRevisionNo}`\n      });\n    }\n    return items;\n  }, [transaction, transactionTypeStatusColorsMap, t]);\n\n  // Reports which files landed so the uploader can unstage only those.\n  const handleUploadAttachments = useCallback(\n    async (entries) => {\n      const { uploaded, failed, error } = await uploadTransactionAttachments(\n        transaction.transactionId,\n        entries\n      );\n\n      if (uploaded.length) {\n        await getAttachments();\n        refreshGridData();\n        enqueueSnackbar(\n          t('transactions.sidesheet.filesUploadSuccess', {\n            defaultValue: 'Files uploaded successfully'\n          }),\n          {\n            variant: 'success',\n            anchorOrigin: { vertical: 'top', horizontal: 'center' }\n          }\n        );\n      }\n\n      if (failed.length) {\n        console.error(error);\n        enqueueSnackbar(\n          t('transactions.sidesheet.fileUploadError', {\n            defaultValue:\n              'File upload failed: We encountered a system error. Please try again or contact support if the issue persists.'\n          }),\n          {\n            variant: 'error',\n            anchorOrigin: { vertical: 'top', horizontal: 'center' }\n          }\n        );\n      }\n\n      return { uploaded, failed };\n    },\n    [\n      transaction.transactionId,\n      getAttachments,\n      refreshGridData,\n      enqueueSnackbar,\n      t\n    ]\n  );\n\n  const innerSidesheetList = useMemo(\n    () => [\n      {\n        open: openInnerSidesheetState.workflowAction,\n        closeSheet: () =>\n          setOpenInnerSidesheetState({ workflowActions: false }),\n        title: t('transactions.sidesheet.availableWorkflowActions', {\n          defaultValue: 'Available Workflow Actions'\n        }),\n        children: (\n          <WorkflowActions\n            transaction={transaction}\n            closeSideSheet={() => {\n              setOpenInnerSidesheetState({\n                workflowActions: false\n              });\n              refetchTransaction();\n            }}\n            refreshGridData={refreshGridData}\n          />\n        )\n      },\n      {\n        open: openInnerSidesheetState.attachments,\n        closeSheet: () => setOpenInnerSidesheetState({ attachments: false }),\n        title: t('transactions.sidesheet.addAttachment', {\n          defaultValue: 'Add Attachment'\n        }),\n        children: (\n          <UdpTransactionAttachmentUploader\n            onUploadAttachments={handleUploadAttachments}\n            attachmentTypes={transactionAttachmentTypes}\n            defaultAttachmentTypeCode={defaultAttachmentTypeCode}\n            attachmentProgress={attachmentProgress}\n            currentAttachments={currentAttachments}\n            setCurrentAttachments={setCurrentAttachments}\n            transaction={transaction}\n            previousAttachments={transactionAttachments}\n            setPreviousAttachments={setTransactionAttachments}\n            MAX_FILE_SIZE_MB={MAX_FILE_SIZE_MB}\n            allowedExtensions={allowedExtensions}\n            filePreview={filePreview}\n            setFilePreview={setFilePreview}\n          />\n        )\n      },\n      {\n        open: openInnerSidesheetState.notes,\n        closeSheet: () => setOpenInnerSidesheetState({ notes: false }),\n        title: t('transactions.notes.addNote', {\n          defaultValue: 'Add Note'\n        }),\n        buttonLabel: t('transactions.notes.saveNote', {\n          defaultValue: 'Save note'\n        }),\n        buttonTwoLabel: t('common.clear', { defaultValue: 'Clear' }),\n        buttonTwoAction: handleNoteFormReset,\n        onSubmit: handleNoteFormSubmit,\n        children: (\n          <TransactionNoteForm\n            ref={transactionNoteFormRef}\n            businessObjectKey={transaction?.businessObjectKey}\n            closeSideSheet={() => {\n              setOpenInnerSidesheetState({ notes: false });\n              setRefreshNotes(true);\n            }}\n            noteTypes={noteTypes}\n            fetchNoteTypesLoading={fetchNoteTypesLoading}\n          />\n        )\n      }\n    ],\n    [\n      openInnerSidesheetState.workflowAction,\n      openInnerSidesheetState.attachments,\n      openInnerSidesheetState.notes,\n      transaction,\n      refreshGridData,\n      currentAttachments,\n      transactionAttachmentTypes,\n      defaultAttachmentTypeCode,\n      attachmentProgress,\n      transactionAttachments,\n      filePreview,\n      handleNoteFormReset,\n      handleNoteFormSubmit,\n      noteTypes,\n      fetchNoteTypesLoading,\n      setOpenInnerSidesheetState,\n      refetchTransaction,\n      handleUploadAttachments,\n      setCurrentAttachments,\n      setTransactionAttachments,\n      setFilePreview,\n      t\n    ]\n  );\n\n  const transactionDetailPageId = useMemo(() => {\n    return getUiActionRenderParameters(\n      TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n    )?.pageId;\n  }, [getUiActionRenderParameters]);\n\n  useEffect(() => {\n    (async () => {\n      if (!transactionAttachmentsData) {\n        getAttachments();\n      }\n    })();\n  }, [transactionAttachmentsData, getAttachments]);\n\n  return (\n    <>\n      <div className='edit-transaction-sidesheet'>\n        <div className={`edit-transaction-sidesheet-header 'is-sticky'`}>\n          <div className='edit-transaction-sidesheet-header-title'></div>\n          <div className='edit-transaction-sidesheet-header-content'>\n            <div className='edit-transaction-sidesheet-header-items'>\n              {headerItemInfo.map((headerItem) => {\n                return (\n                  <EditTransactionHeaderItem\n                    key={headerItem.label}\n                    label={headerItem.label}\n                    statusChip={headerItem.statusChip}\n                    value={headerItem.value}\n                  />\n                );\n              })}\n            </div>\n            <div className='edit-transaction-sidesheet-header-buttons'>\n              <FluentButton\n                color='primary'\n                onClick={() => {\n                  setOpenInnerSidesheetState({ attachments: true });\n                }}\n              >\n                <FluentIcon\n                  component={AddIcon}\n                  className='edit-transaction-header-button-icon'\n                  size='small'\n                />\n                {t('transactions.sidesheet.attachment', {\n                  defaultValue: 'Attachment'\n                })}\n              </FluentButton>\n              <FluentButton\n                color='primary'\n                onClick={() => {\n                  setOpenInnerSidesheetState({ notes: true });\n                }}\n              >\n                <FluentIcon\n                  component={AddIcon}\n                  className='edit-transaction-header-button-icon'\n                  size='small'\n                />\n                {t('transactions.notes.note', { defaultValue: 'Note' })}\n              </FluentButton>\n            </div>\n            <div className='divider'>\n              <Divider />\n            </div>\n            <div className='edit-transaction-sidesheet-tabs'>\n              <UdpTabs\n                value={selectedTab}\n                onChange={(value, tabIndex) => {\n                  setSelectedTab(tabIndex);\n                }}\n                tabList={tabNames.map((tabName) => ({ label: tabName }))}\n                buttonWidth={'100%'}\n              />\n            </div>\n          </div>\n          <div className='divider'>\n            <Divider />\n          </div>\n        </div>\n\n        <div className='edit-transaction-sidesheet-body'>\n          <div>\n            <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.DETAILS}>\n              {transactionDetailPageId ? (\n                <UdpTransactionCustomPage\n                  transactionTypeId={transactionTypeId}\n                  transactionUiActionType={\n                    TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n                  }\n                  formRef={formRef}\n                  transaction={transaction}\n                  refetchTransaction={refetchTransaction}\n                  setHasUnsavedChanges={setHasUnsavedChanges}\n                  refreshGridData={refreshGridData}\n                  additionalPageParms={additionalPageParms}\n                  onSubmitSuccess={handleSaveSuccess}\n                />\n              ) : (\n                <DynamicTransactionDomainForm\n                  transaction={transaction}\n                  formRef={formRef}\n                  domainName={domainName}\n                  transactionTypeId={transactionTypeId}\n                  transactionUiActionType={\n                    TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n                  }\n                  setHasUnsavedChanges={setHasUnsavedChanges}\n                  refetchTransaction={refetchTransaction}\n                  onSubmitSuccess={handleSaveSuccess}\n                  catalogObject={catalogObject}\n                />\n              )}\n            </UdpTabPanel>\n\n            <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.HISTORY}>\n              <TransactionTimeline\n                ref={transactionTimelineRef}\n                transactionId={transaction?.transactionId}\n              />\n            </UdpTabPanel>\n            <UdpTabPanel\n              value={selectedTab}\n              index={TRANSACTION_TAB.ATTACHMENTS}\n            >\n              <TransactionAttachments\n                transactionAttachments={transactionAttachmentsData}\n                isLoading={fetchTransactionAttachmentsLoading}\n              />\n            </UdpTabPanel>\n            <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.NOTES}>\n              <TransactionNotes\n                businessObjectKey={transaction?.businessObjectKey}\n                refreshNotes={refreshNotes}\n                setRefreshNotes={setRefreshNotes}\n                noteTypes={noteTypes}\n                fetchNoteTypeLoading={fetchNoteTypesLoading}\n              />\n            </UdpTabPanel>\n          </div>\n        </div>\n        {selectedTab == TRANSACTION_TAB.DETAILS && (\n          <div className='edit-transaction-sidesheet-footer'>\n            <EditTransactionDetailsFooterItem\n              transactionTypeId={transactionTypeId}\n              transactionIsClosed={transactionIsClosed}\n              handleOnCancel={closeSideSheet}\n              handleOnSaveChanges={handleSaveChanges}\n              hideSaveChanges={hideSaveChanges}\n            />\n          </div>\n        )}\n      </div>\n\n      {openInnerSidesheetState &&\n        // eslint-disable-next-line react-hooks/refs\n        innerSidesheetList.map((item) => {\n          return (\n            <SideSheet\n              key={item.title}\n              open={item.open}\n              width={600}\n              title={item.title}\n              onClose={item.closeSheet}\n              buttonLabel={item?.buttonLabel}\n              buttonOneDisabled={item?.buttonOneDisabled}\n              buttonTwoLabel={item?.buttonTwoLabel}\n              buttonTwoAction={item?.buttonTwoAction}\n              onSubmit={item?.onSubmit}\n              color='primary'\n            >\n              {item.children}\n            </SideSheet>\n          );\n        })}\n    </>\n  );\n};\n\nexport default EditTransaction;\n"],"mappings":"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"}