diff --git a/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js index 0f68e81..ba35a4d 100644 --- a/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js +++ b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js @@ -15,6 +15,7 @@ import { Column } from 'primereact/column'; import { Button } from 'primereact/button'; import { Toast } from 'primereact/toast'; import { Dialog } from 'primereact/dialog'; +import { Editor } from 'primereact/editor'; import translationStrings from '../../../../translationStringsForComponents'; import { autorizationNames } from '../../../../configData'; @@ -26,6 +27,9 @@ const LatestPecEmailsTable = () => { const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [isVisibleDetails, setIsVisibleDetails] = useState(false); const [previewItem, setPreviewItem] = useState({}); + const [isVisibleRejectDialog, setIsVisibleRejectDialog] = useState(false); + const [rejectMotivation, setRejectMotivation] = useState(''); + const [pendingRejectIds, setPendingRejectIds] = useState([]); const toast = useRef(null); useEffect(() => { @@ -103,6 +107,57 @@ const LatestPecEmailsTable = () => { } } + const openRejectDialog = (ids) => { + if (isEmpty(ids)) return; + setPendingRejectIds(ids); + setIsVisibleRejectDialog(true); + }; + + const hideRejectDialog = () => { + setIsVisibleRejectDialog(false); + setRejectMotivation(''); + setPendingRejectIds([]); + }; + + const doReject = () => { + if (isEmpty(pendingRejectIds)) return; + setLocalAsyncRequest(true); + setIsVisibleRejectDialog(false); + for (let id of pendingRejectIds) { + PecEmailService.rejectUserAction(id, getUserRejectActionCallback, errGetUserRejectActionCallbacks, + rejectMotivation ? [['motivation', rejectMotivation]] : [] + ); + } + setRejectMotivation(''); + setPendingRejectIds([]); + } + + const getUserRejectActionCallback = (resp) => { + if (resp.status === 'SUCCESS') { + if (toast.current && resp.message) { + toast.current.show({ + severity: 'success', + summary: '', + detail: resp.message + }); + } + PecEmailService.getPecEmails(getCallback, errGetCallbacks); + } else { + setLocalAsyncRequest(false); + } + } + + const errGetUserRejectActionCallbacks = (resp) => { + setLocalAsyncRequest(false); + if (toast.current && resp.message) { + toast.current.show({ + severity: resp.status === 'SUCCESS' ? 'info' : 'error', + summary: '', + detail: resp.message + }); + } + } + const doShowDetails = (row) => { setPreviewItem(row); setIsVisibleDetails(true); @@ -117,6 +172,16 @@ const LatestPecEmailsTable = () => { setPreviewItem({}); } + const headerRejectDialog = () => {__('Confermare il rifiuto', 'gepafin')}; + + const footerRejectDialog = useCallback(() => ( +