- implemented feature-132 - new status technical_evaluation;

This commit is contained in:
Vitalii Kiiko
2025-03-04 12:42:47 +01:00
parent 69ca33f232
commit 7b5bdc8785
5 changed files with 165 additions and 140 deletions

View File

@@ -32,6 +32,9 @@ const getBandoLabel = (status) => {
case 'ADMISSIBLE': case 'ADMISSIBLE':
return __('Ammisibile', 'gepafin'); return __('Ammisibile', 'gepafin');
case 'TECHNICAL_EVALUATION':
return __('Valutazione technico-finanziaria', 'gepafin');
case 'DUE': case 'DUE':
return __('In scadenza', 'gepafin'); return __('In scadenza', 'gepafin');

View File

@@ -30,6 +30,9 @@ const getBandoSeverity = (status) => {
case 'ADMISSIBLE': case 'ADMISSIBLE':
return 'info'; return 'info';
case 'TECHNICAL_EVALUATION':
return 'info';
case 'DUE': case 'DUE':
return 'warning'; return 'warning';

View File

@@ -47,12 +47,12 @@ const LatestBandiTableAsync = () => {
} }
} }
return { return {
"globalFilters": { globalFilters: {
"page": lazyState.page ? lazyState.page + 1 : 1, page: lazyState.page ? lazyState.page + 1 : 1,
"limit": lazyState.rows, limit: lazyState.rows,
sortBy, sortBy
status: statuses },
} status: statuses
} }
}, [lazyState]); }, [lazyState]);

View File

@@ -71,6 +71,7 @@ const DomandaEditInstructorManager = () => {
const [isVisibleCompleteDialog, setIsVisibleCompleteDialog] = useState(false); const [isVisibleCompleteDialog, setIsVisibleCompleteDialog] = useState(false);
const [operationType, setOperationType] = useState(''); const [operationType, setOperationType] = useState('');
const [motivation, setMotivation] = useState(''); const [motivation, setMotivation] = useState('');
const [amountAccepted, setAmountAccepted] = useState(0);
const [isVisibleAppointmentDialog, setIsVisibleAppointmentDialog] = useState(false); const [isVisibleAppointmentDialog, setIsVisibleAppointmentDialog] = useState(false);
const [allFilesRated, setAllFilesRated] = useState(false); const [allFilesRated, setAllFilesRated] = useState(false);
const [atLeastOneChecked, setAtLeastOneChecked] = useState(false); const [atLeastOneChecked, setAtLeastOneChecked] = useState(false);
@@ -167,10 +168,14 @@ const DomandaEditInstructorManager = () => {
if (connectedSoccorsoId !== 0) { if (connectedSoccorsoId !== 0) {
navigate(`/mie-domande/${id}/soccorso/${connectedSoccorsoId}`); navigate(`/mie-domande/${id}/soccorso/${connectedSoccorsoId}`);
} else { } else {
doSaveDraft(`/mie-domande/${id}/aggiungi-soccorso/`) doSaveDraft(navigateToNewSoccorso)
} }
} }
const navigateToNewSoccorso = () => {
navigate(`/mie-domande/${id}/aggiungi-soccorso/`);
}
const getVersion = (resp) => { const getVersion = (resp) => {
if (resp.status === 'SUCCESS') { if (resp.status === 'SUCCESS') {
if (resp.data.evaluationVersion === 'V1') { if (resp.data.evaluationVersion === 'V1') {
@@ -306,7 +311,7 @@ const DomandaEditInstructorManager = () => {
}, []); }, []);
} }
const doSaveDraft = useCallback((doRedirect = '') => { const doSaveDraft = useCallback((afterUpdateCallback = null, cfgModifier = {}) => {
if (data.evaluationVersion === 'V1') { if (data.evaluationVersion === 'V1') {
const submitData = { const submitData = {
criteria: klona(data.criteria), criteria: klona(data.criteria),
@@ -318,13 +323,14 @@ const DomandaEditInstructorManager = () => {
}) })
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note note: data.note,
...cfgModifier
}; };
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
(data) => updateCallback(data, doRedirect), (data) => updateCallback(data, afterUpdateCallback),
errUpdateCallback errUpdateCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
@@ -338,20 +344,26 @@ const DomandaEditInstructorManager = () => {
}) })
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note note: data.note,
...cfgModifier
} }
ApplicationEvaluationService.updateEvaluationV2( ApplicationEvaluationService.updateEvaluationV2(
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
(data) => updateCallback(data, doRedirect), (data) => updateCallback(data, afterUpdateCallback),
errUpdateCallback errUpdateCallback
); );
} }
}, [data]); }, [data]);
const updateCallback = (data, doRedirect = '') => { /**
*
* @param data {object}
* @param afterUpdateCallback {function}
*/
const updateCallback = (data, afterUpdateCallback = null) => {
if (data.status === 'SUCCESS') { if (data.status === 'SUCCESS') {
setData(getFormattedData(data.data)); setData(getFormattedData(data.data));
if (toast.current) { if (toast.current) {
@@ -361,8 +373,8 @@ const DomandaEditInstructorManager = () => {
detail: data.message detail: data.message
}); });
} }
if (!isEmpty(doRedirect)) { if (afterUpdateCallback) {
navigate(doRedirect); afterUpdateCallback();
} }
} }
storeSet.main.unsetAsyncRequest(); storeSet.main.unsetAsyncRequest();
@@ -388,7 +400,8 @@ const DomandaEditInstructorManager = () => {
checklist: klona(data.checklist), checklist: klona(data.checklist),
files: klona(data.files), files: klona(data.files),
note: data.note, note: data.note,
motivation motivation,
amountAccepted
} }
setLoading(true); setLoading(true);
@@ -396,8 +409,8 @@ const DomandaEditInstructorManager = () => {
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
const newFormValues = getTransformedSubmitData(); const newFormValues = getTransformedSubmitData();
@@ -411,7 +424,8 @@ const DomandaEditInstructorManager = () => {
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note, note: data.note,
motivation motivation,
amountAccepted
} }
setLoading(true); setLoading(true);
@@ -420,8 +434,8 @@ const DomandaEditInstructorManager = () => {
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} }
} }
@@ -442,8 +456,8 @@ const DomandaEditInstructorManager = () => {
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
const newFormValues = getTransformedSubmitData(); const newFormValues = getTransformedSubmitData();
@@ -466,13 +480,13 @@ const DomandaEditInstructorManager = () => {
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} }
} }
const updateStatusCallback = (data) => { const approveRejectCallback = (data) => {
if (data.status === 'SUCCESS') { if (data.status === 'SUCCESS') {
setData(getFormattedData(data.data)); setData(getFormattedData(data.data));
if (toast.current) { if (toast.current) {
@@ -486,7 +500,7 @@ const DomandaEditInstructorManager = () => {
setLoading(false); setLoading(false);
} }
const errUpdateStatusCallback = (data) => { const errApproveRejectCallback = (data) => {
if (toast.current && data.message) { if (toast.current && data.message) {
toast.current.show({ toast.current.show({
severity: 'error', severity: 'error',
@@ -575,10 +589,10 @@ const DomandaEditInstructorManager = () => {
set404FromErrorResponse(data); set404FromErrorResponse(data);
} }
const shouldDisableField = (fieldName) => { const shouldDisableField = useCallback((fieldName) => {
return !['EVALUATION'].includes(data.applicationStatus) return !['EVALUATION', 'ADMISSIBLE'].includes(data.applicationStatus)
|| (['ADMISSIBLE'].includes(data.applicationStatus) && fieldName !== 'criteria') || (['ADMISSIBLE'].includes(data.applicationStatus) && fieldName !== 'criteria')
} }, [data.applicationStatus]);
const headerCompleteDialog = () => { const headerCompleteDialog = () => {
return 'approve' === operationType return 'approve' === operationType
@@ -592,15 +606,15 @@ const DomandaEditInstructorManager = () => {
setMotivation(''); setMotivation('');
} }
const footerCompleteDialog = () => { const footerCompleteDialog = useCallback(() => {
return <div> return <div>
<Button type="button" label={__('Anulla', 'gepafin')} onClick={hideCompleteDialog} outlined/> <Button type="button" label={__('Anulla', 'gepafin')} onClick={hideCompleteDialog} outlined/>
<Button <Button
type="button" type="button"
disabled={loading} disabled={loading || ('approve' === operationType && (!amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0))}
label={__('Invia', 'gepafin')} onClick={'approve' === operationType ? doApprove : doReject}/> label={__('Invia', 'gepafin')} onClick={'approve' === operationType ? doApprove : doReject}/>
</div> </div>
} }, [amountAccepted])
const initiateApproving = () => { const initiateApproving = () => {
setOperationType('approve'); setOperationType('approve');
@@ -614,11 +628,12 @@ const DomandaEditInstructorManager = () => {
} }
const doCheckNDG = () => { const doCheckNDG = () => {
doSaveDraft(doGetNDGRequest);
}
const doGetNDGRequest = () => {
storeSet.main.setAsyncRequest(); storeSet.main.setAsyncRequest();
doSaveDraft(); AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
setTimeout(() => {
AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
}, 100);
} }
const getNdgCallback = (data) => { const getNdgCallback = (data) => {
@@ -733,9 +748,19 @@ const DomandaEditInstructorManager = () => {
} }
const doMakeAdmisible = () => { const doMakeAdmisible = () => {
// TODO doSaveDraft(null, {
applicationStatus: 'ADMISSIBLE'
});
} }
const doPassTechnicalEvaluation = useCallback(() => {
if (isAdmissible) {
doSaveDraft(null, {
applicationStatus: 'TECHNICAL_EVALUATION'
});
}
}, [isAdmissible]);
const evaluationBlockedForUser = (data = {}) => { const evaluationBlockedForUser = (data = {}) => {
const userData = storeGet.main.userData(); const userData = storeGet.main.userData();
return isAsyncRequest || userData.id !== data.assignedUserId; return isAsyncRequest || userData.id !== data.assignedUserId;
@@ -807,9 +832,13 @@ const DomandaEditInstructorManager = () => {
/> />
<Button <Button
type="button" type="button"
disabled={true} disabled={!data.id || !['ADMISSIBLE'].includes(data.applicationStatus) || evaluationBlockedForUser(data)}
onClick={() => { onClick={doPassTechnicalEvaluation}
}} icon="pi pi-info-circle" iconPos="right"
tooltip={isAdmissible
? __('Punteggio sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')
: __('Punteggio non sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')}
severity={isAdmissible ? 'success' : 'warning'}
label={__('Valutazione tecnico-finanziaria positiva', 'gepafin')} label={__('Valutazione tecnico-finanziaria positiva', 'gepafin')}
/> />
{data.id {data.id
@@ -818,7 +847,7 @@ const DomandaEditInstructorManager = () => {
disabled={!isAdmissible disabled={!isAdmissible
|| ['APPROVED'].includes(data.applicationStatus) || ['APPROVED'].includes(data.applicationStatus)
|| evaluationBlockedForUser(data) || evaluationBlockedForUser(data)
|| (APP_EVALUATION_FLOW_ID === '1' && !['ADMISSIBLE'].includes(data.applicationStatus)) || (APP_EVALUATION_FLOW_ID === '1' && !['ADMISSIBLE', 'TECHNICAL_EVALUATION'].includes(data.applicationStatus))
} }
onClick={initiateApproving} onClick={initiateApproving}
label={__('Domanda deliberata', 'gepafin')} label={__('Domanda deliberata', 'gepafin')}
@@ -827,7 +856,7 @@ const DomandaEditInstructorManager = () => {
? <Button ? <Button
type="button" type="button"
disabled={APP_EVALUATION_FLOW_ID === '1' disabled={APP_EVALUATION_FLOW_ID === '1'
&& (!['EVALUATION', 'ADMISSIBLE', 'APPOINTMENT'].includes(data.applicationStatus) && (!['EVALUATION', 'ADMISSIBLE', 'APPOINTMENT', 'TECHNICAL_EVALUATION'].includes(data.applicationStatus)
|| evaluationBlockedForUser(data))} || evaluationBlockedForUser(data))}
onClick={initiateRejecting} onClick={initiateRejecting}
label={__('Respingi domanda', 'gepafin')} label={__('Respingi domanda', 'gepafin')}
@@ -1211,6 +1240,18 @@ const DomandaEditInstructorManager = () => {
footer={footerCompleteDialog} footer={footerCompleteDialog}
style={{ maxWidth: '600px', width: '100%' }} style={{ maxWidth: '600px', width: '100%' }}
onHide={hideCompleteDialog}> onHide={hideCompleteDialog}>
{operationType === 'approve'
? <div className="appForm__field">
<label
className={classNames({ 'p-error': !amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0 })}>
{__('Importo approvato', 'gepafin')}
</label>
<InputNumber
value={amountAccepted}
keyfilter="int"
invalid={!amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0}
onChange={(e) => setAmountAccepted(e.value)}/>
</div> : null}
<div className="appForm__field"> <div className="appForm__field">
<label>{__('Motivazione', 'gepafin')}</label> <label>{__('Motivazione', 'gepafin')}</label>
<Editor <Editor

View File

@@ -168,10 +168,14 @@ const DomandaEditPreInstructor = () => {
if (connectedSoccorsoId !== 0) { if (connectedSoccorsoId !== 0) {
navigate(`/domande/${id}/soccorso/${connectedSoccorsoId}`); navigate(`/domande/${id}/soccorso/${connectedSoccorsoId}`);
} else { } else {
doSaveDraft(`/domande/${id}/aggiungi-soccorso/`) doSaveDraft(navigateToNewSoccorso)
} }
} }
const navigateToNewSoccorso = () => {
navigate(`/domande/${id}/aggiungi-soccorso/`);
}
const getVersion = (resp) => { const getVersion = (resp) => {
if (resp.status === 'SUCCESS') { if (resp.status === 'SUCCESS') {
if (resp.data.evaluationVersion === 'V1') { if (resp.data.evaluationVersion === 'V1') {
@@ -307,7 +311,7 @@ const DomandaEditPreInstructor = () => {
}, []); }, []);
} }
const doSaveDraft = useCallback((doRedirect = '') => { const doSaveDraft = useCallback((afterUpdateCallback = null, cfgModifier = {}) => {
if (data.evaluationVersion === 'V1') { if (data.evaluationVersion === 'V1') {
const submitData = { const submitData = {
criteria: klona(data.criteria), criteria: klona(data.criteria),
@@ -319,13 +323,14 @@ const DomandaEditPreInstructor = () => {
}) })
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note note: data.note,
...cfgModifier
}; };
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
(data) => updateCallback(data, doRedirect), (data) => updateCallback(data, afterUpdateCallback),
errUpdateCallback errUpdateCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
@@ -339,20 +344,26 @@ const DomandaEditPreInstructor = () => {
}) })
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note note: data.note,
...cfgModifier
} }
ApplicationEvaluationService.updateEvaluationV2( ApplicationEvaluationService.updateEvaluationV2(
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
(data) => updateCallback(data, doRedirect), (data) => updateCallback(data, afterUpdateCallback),
errUpdateCallback errUpdateCallback
); );
} }
}, [data]); }, [data]);
const updateCallback = (data, doRedirect = '') => { /**
*
* @param data {object}
* @param afterUpdateCallback {function}
*/
const updateCallback = (data, afterUpdateCallback = null) => {
if (data.status === 'SUCCESS') { if (data.status === 'SUCCESS') {
setData(getFormattedData(data.data)); setData(getFormattedData(data.data));
if (toast.current) { if (toast.current) {
@@ -362,8 +373,8 @@ const DomandaEditPreInstructor = () => {
detail: data.message detail: data.message
}); });
} }
if (!isEmpty(doRedirect)) { if (afterUpdateCallback) {
navigate(doRedirect); afterUpdateCallback();
} }
} }
storeSet.main.unsetAsyncRequest(); storeSet.main.unsetAsyncRequest();
@@ -398,8 +409,8 @@ const DomandaEditPreInstructor = () => {
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
const newFormValues = getTransformedSubmitData(); const newFormValues = getTransformedSubmitData();
@@ -413,7 +424,8 @@ const DomandaEditPreInstructor = () => {
)), )),
amendmentDetails: klona(data.amendmentDetails), amendmentDetails: klona(data.amendmentDetails),
note: data.note, note: data.note,
motivation motivation,
amountAccepted
} }
setLoading(true); setLoading(true);
@@ -422,8 +434,8 @@ const DomandaEditPreInstructor = () => {
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} }
} }
@@ -444,8 +456,8 @@ const DomandaEditPreInstructor = () => {
ApplicationEvaluationService.updateEvaluation( ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId, data.assignedApplicationId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} else if (data.evaluationVersion === 'V2') { } else if (data.evaluationVersion === 'V2') {
const newFormValues = getTransformedSubmitData(); const newFormValues = getTransformedSubmitData();
@@ -468,13 +480,13 @@ const DomandaEditPreInstructor = () => {
data.assignedApplicationId, data.assignedApplicationId,
formId, formId,
submitData, submitData,
updateStatusCallback, approveRejectCallback,
errUpdateStatusCallback errApproveRejectCallback
); );
} }
} }
const updateStatusCallback = (data) => { const approveRejectCallback = (data) => {
if (data.status === 'SUCCESS') { if (data.status === 'SUCCESS') {
setData(getFormattedData(data.data)); setData(getFormattedData(data.data));
if (toast.current) { if (toast.current) {
@@ -488,7 +500,7 @@ const DomandaEditPreInstructor = () => {
setLoading(false); setLoading(false);
} }
const errUpdateStatusCallback = (data) => { const errApproveRejectCallback = (data) => {
if (toast.current && data.message) { if (toast.current && data.message) {
toast.current.show({ toast.current.show({
severity: 'error', severity: 'error',
@@ -577,10 +589,10 @@ const DomandaEditPreInstructor = () => {
set404FromErrorResponse(data); set404FromErrorResponse(data);
} }
const shouldDisableField = (fieldName) => { const shouldDisableField = useCallback((fieldName) => {
return !['EVALUATION'].includes(data.applicationStatus) return !['EVALUATION', 'ADMISSIBLE'].includes(data.applicationStatus)
|| (['ADMISSIBLE'].includes(data.applicationStatus) && fieldName !== 'criteria') || (['ADMISSIBLE'].includes(data.applicationStatus) && fieldName !== 'criteria')
} }, [data.applicationStatus]);
const headerCompleteDialog = () => { const headerCompleteDialog = () => {
return 'approve' === operationType return 'approve' === operationType
@@ -594,15 +606,15 @@ const DomandaEditPreInstructor = () => {
setMotivation(''); setMotivation('');
} }
const footerCompleteDialog = () => { const footerCompleteDialog = useCallback(() => {
return <div> return <div>
<Button type="button" label={__('Anulla', 'gepafin')} onClick={hideCompleteDialog} outlined/> <Button type="button" label={__('Anulla', 'gepafin')} onClick={hideCompleteDialog} outlined/>
<Button <Button
type="button" type="button"
disabled={loading} disabled={loading || ('approve' === operationType && (!amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0))}
label={__('Invia', 'gepafin')} onClick={'approve' === operationType ? doApprove : doReject}/> label={__('Invia', 'gepafin')} onClick={'approve' === operationType ? doApprove : doReject}/>
</div> </div>
} }, [amountAccepted])
const initiateApproving = () => { const initiateApproving = () => {
setOperationType('approve'); setOperationType('approve');
@@ -616,11 +628,12 @@ const DomandaEditPreInstructor = () => {
} }
const doCheckNDG = () => { const doCheckNDG = () => {
doSaveDraft(doGetNDGRequest);
}
const doGetNDGRequest = () => {
storeSet.main.setAsyncRequest(); storeSet.main.setAsyncRequest();
doSaveDraft(); AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
setTimeout(() => {
AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
}, 100);
} }
const getNdgCallback = (data) => { const getNdgCallback = (data) => {
@@ -735,58 +748,18 @@ const DomandaEditPreInstructor = () => {
} }
const doMakeAdmisible = () => { const doMakeAdmisible = () => {
storeSet.main.setAsyncRequest(); doSaveDraft(null, {
//doSaveDraft(); applicationStatus: 'ADMISSIBLE'
});
setTimeout(() => {
const submitData = {
applicationsStatus: 'ADMISSIBLE',
}
if (data.evaluationVersion === 'V1') {
ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId,
submitData,
updateCallback,
errUpdateCallback
);
} else if (data.evaluationVersion === 'V2') {
ApplicationEvaluationService.updateEvaluationV2(
data.assignedApplicationId,
formId,
submitData,
updateCallback,
errUpdateCallback
);
}
}, 100);
} }
const doPassTechnicalEvaluation = () => { const doPassTechnicalEvaluation = useCallback(() => {
storeSet.main.setAsyncRequest(); if (isAdmissible) {
doSaveDraft(); doSaveDraft(null, {
applicationStatus: 'TECHNICAL_EVALUATION'
setTimeout(() => { });
const submitData = { }
applicationsStatus: 'TECHNICAL_EVALUATION', }, [isAdmissible]);
}
if (data.evaluationVersion === 'V1') {
ApplicationEvaluationService.updateEvaluation(
data.assignedApplicationId,
submitData,
updateCallback,
errUpdateCallback
);
} else if (data.evaluationVersion === 'V2') {
ApplicationEvaluationService.updateEvaluationV2(
data.assignedApplicationId,
formId,
submitData,
updateCallback,
errUpdateCallback
);
}
}, 100);
}
const evaluationBlockedForUser = (data = {}) => { const evaluationBlockedForUser = (data = {}) => {
const userData = storeGet.main.userData() const userData = storeGet.main.userData()
@@ -859,8 +832,12 @@ const DomandaEditPreInstructor = () => {
/> />
<Button <Button
type="button" type="button"
disabled={!data.id || !['ADMISSIBLE'].includes(data.applicationStatus) || !isAdmissible || evaluationBlockedForUser(data)} disabled={!data.id || !['ADMISSIBLE'].includes(data.applicationStatus) || evaluationBlockedForUser(data)}
onClick={doPassTechnicalEvaluation} onClick={doPassTechnicalEvaluation}
icon="pi pi-info-circle" iconPos="right"
tooltip={isAdmissible
? __('Punteggio sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')
: __('Punteggio non sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')}
severity={isAdmissible ? 'success' : 'warning'} severity={isAdmissible ? 'success' : 'warning'}
label={__('Valutazione tecnico-finanziaria positiva', 'gepafin')} label={__('Valutazione tecnico-finanziaria positiva', 'gepafin')}
/> />
@@ -870,7 +847,7 @@ const DomandaEditPreInstructor = () => {
disabled={!isAdmissible disabled={!isAdmissible
|| ['APPROVED', 'REJECTED'].includes(data.applicationStatus) || ['APPROVED', 'REJECTED'].includes(data.applicationStatus)
|| evaluationBlockedForUser(data) || evaluationBlockedForUser(data)
|| (APP_EVALUATION_FLOW_ID === '1' && !['ADMISSIBLE'].includes(data.applicationStatus)) || (APP_EVALUATION_FLOW_ID === '1' && !['TECHNICAL_EVALUATION'].includes(data.applicationStatus))
} }
onClick={initiateApproving} onClick={initiateApproving}
label={__('Domanda deliberata', 'gepafin')} label={__('Domanda deliberata', 'gepafin')}
@@ -880,8 +857,8 @@ const DomandaEditPreInstructor = () => {
type="button" type="button"
disabled={['APPROVED', 'REJECTED'].includes(data.applicationStatus) disabled={['APPROVED', 'REJECTED'].includes(data.applicationStatus)
|| (APP_EVALUATION_FLOW_ID === '1' || (APP_EVALUATION_FLOW_ID === '1'
&& (!['EVALUATION', 'ADMISSIBLE', 'APPOINTMENT'].includes(data.applicationStatus) && (!['EVALUATION', 'ADMISSIBLE', 'APPOINTMENT', 'TECHNICAL_EVALUATION'].includes(data.applicationStatus)
|| evaluationBlockedForUser(data))) || evaluationBlockedForUser(data)))
} }
onClick={initiateRejecting} onClick={initiateRejecting}
label={__('Respingi domanda', 'gepafin')} label={__('Respingi domanda', 'gepafin')}
@@ -1225,10 +1202,10 @@ const DomandaEditPreInstructor = () => {
<td> <td>
{isAdmissible {isAdmissible
? <Tag icon="pi pi-check" severity="success" ? <Tag icon="pi pi-check" severity="success"
value={__('Punteggio sufficiente per passaggio alla valutazione tecnica ed economico finanziaria')}></Tag> : null} value={__('Punteggio sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')}></Tag> : null}
{!isAdmissible {!isAdmissible
? <Tag icon="pi pi-times" severity="warning" ? <Tag icon="pi pi-times" severity="warning"
value={__('Punteggio non sufficiente per passaggio alla valutazione tecnica ed economico finanziaria')}></Tag> : null} value={__('Punteggio non sufficiente per passaggio alla valutazione tecnica ed economico finanziaria', 'gepafin')}></Tag> : null}
</td> </td>
</tr> </tr>
</tbody> </tbody>
@@ -1266,17 +1243,18 @@ const DomandaEditPreInstructor = () => {
footer={footerCompleteDialog} footer={footerCompleteDialog}
style={{ maxWidth: '600px', width: '100%' }} style={{ maxWidth: '600px', width: '100%' }}
onHide={hideCompleteDialog}> onHide={hideCompleteDialog}>
<div className="appForm__field"> {operationType === 'approve'
<label ? <div className="appForm__field">
className={classNames({ 'p-error': isEmpty(amountAccepted) || amountAccepted === 0 })}> <label
{__('Importo approvato', 'gepafin')} className={classNames({ 'p-error': !amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0 })}>
</label> {__('Importo approvato', 'gepafin')}
<InputNumber </label>
value={amountAccepted} <InputNumber
keyfilter="int" value={amountAccepted}
invalid={isEmpty(amountAccepted) || amountAccepted === 0} keyfilter="int"
onChange={(e) => setAmountAccepted(e.value)}/> invalid={!amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0}
</div> onChange={(e) => setAmountAccepted(e.value)}/>
</div> : null}
<div className="appForm__field"> <div className="appForm__field">
<label>{__('Motivazione', 'gepafin')}</label> <label>{__('Motivazione', 'gepafin')}</label>
<Editor <Editor