- implemented feature-132 - new status technical_evaluation;
This commit is contained in:
@@ -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');
|
||||||
|
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -47,13 +47,13 @@ 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]);
|
||||||
|
|
||||||
const onPage = (event) => {
|
const onPage = (event) => {
|
||||||
|
|||||||
@@ -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();
|
|
||||||
setTimeout(() => {
|
|
||||||
AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
|
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
|
||||||
|
|||||||
@@ -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();
|
|
||||||
setTimeout(() => {
|
|
||||||
AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
|
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',
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
}, [isAdmissible]);
|
||||||
|
|
||||||
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,7 +857,7 @@ 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}
|
||||||
@@ -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'
|
||||||
|
? <div className="appForm__field">
|
||||||
<label
|
<label
|
||||||
className={classNames({ 'p-error': isEmpty(amountAccepted) || amountAccepted === 0 })}>
|
className={classNames({ 'p-error': !amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0 })}>
|
||||||
{__('Importo approvato', 'gepafin')}
|
{__('Importo approvato', 'gepafin')}
|
||||||
</label>
|
</label>
|
||||||
<InputNumber
|
<InputNumber
|
||||||
value={amountAccepted}
|
value={amountAccepted}
|
||||||
keyfilter="int"
|
keyfilter="int"
|
||||||
invalid={isEmpty(amountAccepted) || amountAccepted === 0}
|
invalid={!amountAccepted || isEmpty(amountAccepted) || amountAccepted === 0}
|
||||||
onChange={(e) => setAmountAccepted(e.value)}/>
|
onChange={(e) => setAmountAccepted(e.value)}/>
|
||||||
</div>
|
</div> : null}
|
||||||
<div className="appForm__field">
|
<div className="appForm__field">
|
||||||
<label>{__('Motivazione', 'gepafin')}</label>
|
<label>{__('Motivazione', 'gepafin')}</label>
|
||||||
<Editor
|
<Editor
|
||||||
|
|||||||
Reference in New Issue
Block a user