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, useStore } 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'; const SoccorsoAddPreInstructor = () => { const isAsyncRequest = useStore().main.isAsyncRequest(); const { id } = useParams(); const navigate = useNavigate(); const [data, setData] = useState({}); const [evaluationId, setEvaluationId] = useState(0); const [formData, setFormData] = useState({}); const toast = useRef(null); const goToEvaluationPage = () => { navigate(`/domande/${id}`); } useEffect(() => { const parsed = parseInt(id) const entityId = !isNaN(parsed) ? parsed : 0; storeSet.main.setAsyncRequest(); ApplicationEvaluationService.getEvaluationByApplId(getCallbackEvaluation, errGetCallback, [ ['applicationId', entityId] ]); }, [id]); const getCallbackEvaluation = (data) => { if (data.status === 'SUCCESS') { setEvaluationId(data.data.assignedApplicationId); AmendmentsService.getSoccorsoByApplEvalId(data.data.assignedApplicationId, getCallback, errGetCallback) } } const getCallback = (data) => { if (data.status === 'SUCCESS') { setData(data.data); setFormData(getFormattedFormData(data.data)); } storeSet.main.unsetAsyncRequest(); } const errGetCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); storeSet.main.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.main.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(`/domande/${id}/soccorso/${data.data.id}`); }, 1000) } storeSet.main.unsetAsyncRequest(); } const errCreateCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } return (

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

{!isAsyncRequest && !isEmpty(data) ?

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

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

{__('Beneficiario', 'gepafin')} {data.beneficiaryName}

{__('Note', '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')}
: <> }
) } export default SoccorsoAddPreInstructor;