import React, { useEffect, useRef, useState } from 'react'; import { __ } from '@wordpress/i18n'; import { isEmpty, pathOr, isNil } from 'ramda'; import { wrap } from 'object-path-immutable'; // store import AppointmentService from '../../../../service/appointment-service'; // tools import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse'; // components import { Button } from 'primereact/button'; import { Dialog } from 'primereact/dialog'; import { InputTextarea } from 'primereact/inputtextarea'; import { Dropdown } from 'primereact/dropdown'; import { classNames } from 'primereact/utils'; import { InputSwitch } from 'primereact/inputswitch'; import { InputText } from 'primereact/inputtext'; import { Toast } from 'primereact/toast'; import { classificationType, protocolType } from '../../../../configData'; import { useStoreValue } from '../../../../store'; const ArchiveDocument = ({ applicationId, ndg = '', fileId = 0, fileDescr = '', docAttachmentId = null, updateFn = () => {} }) => { const [loading, setLoading] = useState(false); const [isVisibleDialog, setIsVisibleDialog] = useState(false); const [modalData, setModalData] = useState({}); const [types, setTypes] = useState([]); const [categories, setCategories] = useState([]); const toast = useRef(null); const userData = useStoreValue('userData'); const openArchivationModal = () => { setIsVisibleDialog(true); setModalData({ descrizione: fileDescr, idTipoProtocollo: 1, idClassificazione: 0, flagDaFirmare: false, email: userData.email, fileId }); } const headerDialog = () => { return {__('Archiviazione del documento', 'gepafin')}; } const hideDialog = () => { setIsVisibleDialog(false); setModalData({}); } const setValue = (name, value) => { const newData = wrap(modalData).set(name, value).value(); setModalData(newData); } const footerDialog = () => { return
} const submitData = () => { if ( modalData.idTipoProtocollo !== 0 && modalData.idClassificazione !== 0 && !isEmpty(modalData.descrizione) && !isEmpty(modalData.email) ) { setLoading(true); const submitData = { 'input': { 'idTipoProtocollo': modalData.idTipoProtocollo, 'idClassificazione': modalData.idClassificazione, 'flagDaFirmare': modalData.flagDaFirmare, 'descrizione': modalData.descrizione, 'attributes': { 'ndg': ndg, 'email': modalData.email } } } AppointmentService.archiveDocument(applicationId, fileId, submitData, submitCallback, errSubmitCallback) } } const submitCallback = (data) => { if (data.status === 'SUCCESS') { if (toast.current && data.message) { toast.current.show({ severity: 'success', summary: '', detail: data.message }); } const documentAttachmentId = pathOr('fake_id', ['documentAttachmentId'], data.data); updateFn(documentAttachmentId); } setIsVisibleDialog(false); setLoading(false); } const errSubmitCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: data.status === 'SUCCESS' ? 'info' : 'error', summary: '', detail: data.message }); } setIsVisibleDialog(false); set404FromErrorResponse(data); setLoading(false); } useEffect(() => { const newModalData = { ...modalData, idClassificazione: 0 }; setModalData(newModalData); setCategories(classificationType .filter(o => o.idTipoprotocollo === modalData.idTipoProtocollo) .map(o => ({ value: o.idClassificazione, label: o.name }))); }, [modalData.idTipoProtocollo]) useEffect(() => { setTypes(protocolType.map(o => ({ value: o.id, label: o.name }))); }, []); return (!isEmpty(ndg) && !isNil(ndg) && !docAttachmentId ? <>