diff --git a/src/pages/DomandaEditInstructorManager/index.js b/src/pages/DomandaEditInstructorManager/index.js index 83313ac..4316457 100644 --- a/src/pages/DomandaEditInstructorManager/index.js +++ b/src/pages/DomandaEditInstructorManager/index.js @@ -88,7 +88,9 @@ const DomandaEditInstructorManager = () => { const [isVisiblePreTecEvalDialog, setIsVisiblePreTecEvalDialog] = useState(false); const [preTecEvalData, setPreTecEvalData] = useState({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); const [allFilesRated, setAllFilesRated] = useState(false); const [atLeastOneChecked, setAtLeastOneChecked] = useState(false); @@ -851,6 +853,14 @@ const DomandaEditInstructorManager = () => { setPreTecEvalData(newData); } + const setBlueTongueFieldValue = (name, value) => { + const numVal = value ?? 0; + const updated = wrap(preTecEvalData).set(name, numVal).value(); + const field1 = name === 'blueTongueField1' ? numVal : (updated.blueTongueField1 ?? 0); + const field2 = name === 'blueTongueField2' ? numVal : (updated.blueTongueField2 ?? 0); + setPreTecEvalData(wrap(updated).set('amount', field1 + field2).value()); + }; + const headerPreTecEvalDialog = () => { return {__('Valutazione Tecnico-Finanziaria', 'gepafin')}; } @@ -859,17 +869,28 @@ const DomandaEditInstructorManager = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); } const footerPreTecEvalDialog = useCallback(() => { const amount = pathOr(null, ['amount'], preTecEvalData); + const isBlueTongue = preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE'; + const field1 = pathOr(null, ['blueTongueField1'], preTecEvalData); + const field2 = pathOr(null, ['blueTongueField2'], preTecEvalData); + const isBlueTongueInvalid = isBlueTongue && ( + isNil(field1) || isNaN(parseFloat(field1)) || + isNil(field2) || isNaN(parseFloat(field2)) || + parseFloat(field1) + parseFloat(field2) <= 0 + ); + const isAmountInvalid = isNil(amount) || isNaN(parseFloat(amount)) || parseFloat(amount) <= 0; return
}, [preTecEvalData]); @@ -946,7 +967,12 @@ const DomandaEditInstructorManager = () => { const getAmendmentSpecialCallback = (data) => { if (data.status === 'SUCCESS') { - setData(getFormattedData(data.data)); + setConnectedSoccorsoId(data.data.id); + setData(prev => ({ + ...prev, + applicationStatus: 'AWAITING_TECHNICAL_EVALUATION', + status: 'SOCCORSO' + })); if (toast.current && data.message) { toast.current.show({ severity: 'success', @@ -958,7 +984,9 @@ const DomandaEditInstructorManager = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); storeSet('unsetAsyncRequest'); } @@ -974,7 +1002,9 @@ const DomandaEditInstructorManager = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); set404FromErrorResponse(data); storeSet('unsetAsyncRequest'); @@ -2035,21 +2065,65 @@ const DomandaEditInstructorManager = () => { footer={footerPreTecEvalDialog} style={{ maxWidth: '600px', width: '100%' }} onHide={hidePreTecEvalDialog}> -
- - setPreTecEvalFieldValue('amount', e.value)}/> -
+ {preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE' + ? <> +
+ + setBlueTongueFieldValue('blueTongueField1', e.value)}/> +
+
+ + setBlueTongueFieldValue('blueTongueField2', e.value)}/> +
+
+ + +
+ + :
+ + setPreTecEvalFieldValue('amount', e.value)}/> +
+ } {/* diff --git a/src/pages/DomandaEditPreInstructor/index.js b/src/pages/DomandaEditPreInstructor/index.js index 0468f07..008bca7 100644 --- a/src/pages/DomandaEditPreInstructor/index.js +++ b/src/pages/DomandaEditPreInstructor/index.js @@ -88,7 +88,9 @@ const DomandaEditPreInstructor = () => { const [isVisiblePreTecEvalDialog, setIsVisiblePreTecEvalDialog] = useState(false); const [preTecEvalData, setPreTecEvalData] = useState({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); const [allFilesRated, setAllFilesRated] = useState(false); const [atLeastOneChecked, setAtLeastOneChecked] = useState(false); @@ -332,6 +334,14 @@ const DomandaEditPreInstructor = () => { setPreTecEvalData(prev => ({ ...prev, amendmentDocumentType: 'ALTRE_GARANZIE' })); setIsVisiblePreTecEvalDialog(true); } + }, + { + label: __('Blue Tongue', 'gepafin'), + icon: 'pi pi-pen-to-square', + command: () => { + setPreTecEvalData(prev => ({ ...prev, amendmentDocumentType: 'BLUE_TONGUE' })); + setIsVisiblePreTecEvalDialog(true); + } } ] @@ -851,6 +861,14 @@ const DomandaEditPreInstructor = () => { setPreTecEvalData(newData); } + const setBlueTongueFieldValue = (name, value) => { + const numVal = value ?? 0; + const updated = wrap(preTecEvalData).set(name, numVal).value(); + const field1 = name === 'blueTongueField1' ? numVal : (updated.blueTongueField1 ?? 0); + const field2 = name === 'blueTongueField2' ? numVal : (updated.blueTongueField2 ?? 0); + setPreTecEvalData(wrap(updated).set('amount', field1 + field2).value()); + }; + const headerPreTecEvalDialog = () => { return {__('Valutazione Tecnico-Finanziaria', 'gepafin')}; } @@ -859,17 +877,28 @@ const DomandaEditPreInstructor = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); } const footerPreTecEvalDialog = useCallback(() => { const amount = pathOr(null, ['amount'], preTecEvalData); + const isBlueTongue = preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE'; + const field1 = pathOr(null, ['blueTongueField1'], preTecEvalData); + const field2 = pathOr(null, ['blueTongueField2'], preTecEvalData); + const isBlueTongueInvalid = isBlueTongue && ( + isNil(field1) || isNaN(parseFloat(field1)) || + isNil(field2) || isNaN(parseFloat(field2)) || + parseFloat(field1) + parseFloat(field2) <= 0 + ); + const isAmountInvalid = isNil(amount) || isNaN(parseFloat(amount)) || parseFloat(amount) <= 0; return
}, [preTecEvalData]); @@ -946,7 +975,12 @@ const DomandaEditPreInstructor = () => { const getAmendmentSpecialCallback = (data) => { if (data.status === 'SUCCESS') { - setData(getFormattedData(data.data)); + setConnectedSoccorsoId(data.data.id); + setData(prev => ({ + ...prev, + applicationStatus: 'AWAITING_TECHNICAL_EVALUATION', + status: 'SOCCORSO' + })); if (toast.current && data.message) { toast.current.show({ severity: 'success', @@ -958,7 +992,9 @@ const DomandaEditPreInstructor = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); storeSet('unsetAsyncRequest'); } @@ -974,7 +1010,9 @@ const DomandaEditPreInstructor = () => { setIsVisiblePreTecEvalDialog(false); setPreTecEvalData({ amendmentDocumentType: '', - amount: 0 + amount: 0, + blueTongueField1: 0, + blueTongueField2: 0 }); set404FromErrorResponse(data); storeSet('unsetAsyncRequest'); @@ -1015,99 +1053,6 @@ const DomandaEditPreInstructor = () => { setData(newData); }, [data]); - /*const openSendContractForm = () => { - setIsVisibleContractForm(true); - } - const headerContractDialog = () => { - return {__('Invia il contratto', 'gepafin')}; - } - const hideContractDialog = () => { - setIsVisibleContractForm(false); - setContractFormData({ - subject: '', - text: '' - }); - } - const footerContractDialog = useCallback(() => { - let isDisabled = !contractFormData.subject || isEmpty(contractFormData.subject) - || !contractFormData.text || isEmpty(contractFormData.text) - || !contractFormData.files || isEmpty(contractFormData.files) || isAsyncRequest; - - return
-
- }, [contractFormData]); - const updateContractFormData = (value, path) => { - const newData = wrap(contractFormData).set(path.split('.'), value).value(); - setContractFormData(newData); - }; - const doSendContract = useCallback(() => { - if ( - contractFormData.subject && !isEmpty(contractFormData.subject) - && contractFormData.text && !isEmpty(contractFormData.text) - && contractFormData.files && !isEmpty(contractFormData.files) - ) { - const formDataToSend = new FormData(); - const contractFormDataTemp = { - ...contractFormData - }; - delete contractFormDataTemp.files; - const jsonBlob = new Blob([JSON.stringify(contractFormDataTemp)], { - type: 'application/json' - }); - formDataToSend.append('applicationContractRequest', jsonBlob); - - if (contractFormData.files && contractFormData.files.length > 0) { - contractFormData.files.forEach((file) => { - formDataToSend.append('contractDocuments', file); - }); - } - - storeSet('setAsyncRequest'); - - ApplicationContractService.uploadApplicationContract( - data.applicationId, - formDataToSend, - getUploadApplicationContractCallback, - errGetUploadApplicationContractCallback - ); - } - }, [contractFormData]); - const getUploadApplicationContractCallback = (data) => { - if (data.status === 'SUCCESS') { - setData((prev) => ({ - ...prev, - applicationStatus: 'AWAITING_CONTRACT', - contract: data.data - })); - if (toast.current && data.message) { - toast.current.show({ - severity: 'success', - summary: '', - detail: data.message - }); - } - } - hideContractDialog(); - storeSet('unsetAsyncRequest'); - } - const errGetUploadApplicationContractCallback = (data) => { - if (toast.current && data.message) { - toast.current.show({ - severity: data.status === 'SUCCESS' ? 'info' : 'error', - summary: '', - detail: data.message - }); - } - hideContractDialog(); - set404FromErrorResponse(data); - storeSet('unsetAsyncRequest'); - }*/ - const actionBtns = () => { return
{(['SOCCORSO', 'CLOSE', 'EVALUATION', 'NDG', 'APPOINTMENT', 'ADMISSIBLE', @@ -2034,122 +1979,66 @@ const DomandaEditPreInstructor = () => { footer={footerPreTecEvalDialog} style={{ maxWidth: '600px', width: '100%' }} onHide={hidePreTecEvalDialog}> -
- - setPreTecEvalFieldValue('amount', e.value)}/> -
- - - {/* - This functionality has been moved - */} - {/* -
- - updateContractFormData(e.target.value, 'subject')}/> -
-
- -
- updateContractFormData(e.htmlValue, 'text')} - style={{ height: 80 * 3, width: '100%' }} - /> + {preTecEvalData.amendmentDocumentType === 'BLUE_TONGUE' + ? <> +
+ + setBlueTongueFieldValue('blueTongueField1', e.value)}/> +
+
+ + setBlueTongueFieldValue('blueTongueField2', e.value)}/> +
+
+ + +
+ + :
+ + setPreTecEvalFieldValue('amount', e.value)}/>
-
-
- - o.code).join(',')} - maxFileSize={defaultMaxFileSize} - auto={false} - customUpload={true} - className={classNames({ 'p-invalid': !contractFormData.files || isEmpty(contractFormData.files) })} - onSelect={(e) => { - updateContractFormData(e.files, 'files'); - }} - onRemove={(e) => { - const updatedFiles = contractFormFilesRef.current.getFiles(); - updateContractFormData(updatedFiles, 'files'); - }} - headerTemplate={(options) => { - const { chooseButton } = options; - return ( -
- {chooseButton} -
- ); - }} - chooseOptions={{ - label: __('Aggiungi i file', 'gepafin'), - icon: 'pi pi-plus' - }} - itemTemplate={(file, props) => { - return ( -
-
-
- {file.name} -
- {getFormatedFileSizeText(file.size)} -
-
-
-
- ) - }} - emptyTemplate={

{__('Trascina i file qua')}

} - /> -
-
*/} + } +
: <>