import React, { useState, useEffect, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { useNavigate, useParams } from 'react-router-dom'; import { isEmpty } from 'ramda'; import { wrap } from 'object-path-immutable'; // store import { storeSet, useStoreValue } from '../../store'; // api import AmendmentsService from '../../service/amendments-service'; // tools import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; // components import { Skeleton } from 'primereact/skeleton'; import { Button } from 'primereact/button'; import { Checkbox } from 'primereact/checkbox'; import { Editor } from 'primereact/editor'; import { InputNumber } from 'primereact/inputnumber'; import BlockingOverlay from '../../components/BlockingOverlay'; import { Toast } from 'primereact/toast'; import { InputSwitch } from 'primereact/inputswitch'; import ApplicationEvaluationService from '../../service/application-evaluation-service'; import { Dialog } from 'primereact/dialog'; const SoccorsoAddInstructorManager = () => { const isAsyncRequest = useStoreValue('isAsyncRequest'); const { id } = useParams(); const navigate = useNavigate(); const [data, setData] = useState({}); const [evaluationId, setEvaluationId] = useState(0); const [formData, setFormData] = useState({}); const [isVisibleConfirmDialog, setIsVisibleConfirmDialog] = useState(false) const toast = useRef(null); const goToEvaluationPage = () => { navigate(`/mie-domande/${id}`); } useEffect(() => { const parsed = parseInt(id) const entityId = !isNaN(parsed) ? parsed : 0; storeSet('setAsyncRequest'); ApplicationEvaluationService.getEvaluationByApplId(getCallbackEvaluation, errGetCallback, [ ['applicationId', entityId] ]); }, [id]); const getCallbackEvaluation = (data) => { if (data.status === 'SUCCESS') { setEvaluationId(data.data.id); AmendmentsService.getSoccorsoByApplEvalId(data.data.id, getCallback, errGetCallback) } } const getCallback = (data) => { if (data.status === 'SUCCESS') { setData(data.data); setFormData(getFormattedFormData(data.data)); } storeSet('unsetAsyncRequest'); } const errGetCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); storeSet('unsetAsyncRequest'); } const getFormattedFormData = (data) => { let newData = {}; newData.formFields = data.formFields; newData.responseDays = 10; newData.note = ''; newData.isSendNotification = true; newData.isSendEmail = true; return newData; }; const renderHeader = () => { return ( ); }; const header = renderHeader(); const updateEvaluationValue = (value, path, maxValue) => { let finalValue = value; if (maxValue) { finalValue = value > maxValue ? maxValue : value; } const newData = wrap(formData).set(path.split('.'), finalValue).value(); setFormData(newData); } const doCreate = () => { storeSet('setAsyncRequest'); AmendmentsService.createSoccorso(formData, createCallback, errCreateCallback, [ ['applicationEvaluationId', evaluationId] ]); } const createCallback = (data) => { if (data.status === 'SUCCESS') { if (toast.current) { toast.current.show({ severity: 'success', summary: '', detail: data.message }); } setTimeout(() => { navigate(`/mie-domande/${id}/soccorso/${data.data.id}`); }, 1000) } storeSet('unsetAsyncRequest'); } const errCreateCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); storeSet('unsetAsyncRequest'); } const initCreationProcess = () => { setIsVisibleConfirmDialog(true); } const headerConfirmDialog = () => { return {__('Richiesta di conferma', 'gepafin')}; } const hideConfirmDialog = () => { setIsVisibleConfirmDialog(false); } const footerConfirmDialog = () => { return
} const doConfirm = () => { setIsVisibleConfirmDialog(false); doCreate(); } return (

{__('Richiesta Integrazione Documentale', 'gepafin')}

{!isAsyncRequest && !isEmpty(data) ?

{__('ID domanda', 'gepafin')} {data.applicationId}

{__('Bando', 'gepafin')} {data.callName}

{__('Referente Aziendale', 'gepafin')} {data.beneficiaryName}

{__('Pec/Email', 'gepafin')}

updateEvaluationValue( e.htmlValue, 'note' )} style={{ height: 80 * 3, width: '100%' }} />

{__('Tempo per la Risposta (giorni)', 'gepafin')}

updateEvaluationValue( e.value, 'responseDays', 9999 )}/>

{__('Notifica', 'gepafin')}

updateEvaluationValue( e.value, 'isSendEmail' )}/>
updateEvaluationValue( e.value, 'isSendNotification' )}/>
{formData.formFields ?

{__('Documenti da Integrare', 'gepafin')}

{formData.formFields.map((o, i) =>
updateEvaluationValue( e.checked, `formFields.${i}.selected` )} checked={o.selected}>
)}
: null}
{__('Attenzione', 'gepafin')} {__('L\'invio della richiesta di integrazione sospenderà il termine di valutazione della domanda.', 'gepafin')}
{__('Azioni', 'gepafin')}

{__('Soccorso istruttorio autorizzato dal direttore e autorizzazione caricata su portale a seguito del quale parte l\'email?', 'gepafin')}

: <> }
) } export default SoccorsoAddInstructorManager;