- added re-admit btn and functionality;
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import React, { useRef, useState } from 'react';
|
||||
import { __ } from '@wordpress/i18n';
|
||||
|
||||
// tools
|
||||
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
||||
|
||||
// api
|
||||
import ApplicationService from '../../../../service/application-service';
|
||||
|
||||
// store
|
||||
import { useStoreValue } from '../../../../store';
|
||||
|
||||
import { Toast } from 'primereact/toast';
|
||||
import { Button } from 'primereact/button';
|
||||
|
||||
const EvaluationReAdmit = ({ id, status }) => {
|
||||
const [isSendingRequest, setIsSendingRequest] = useState(false);
|
||||
const toast = useRef(null);
|
||||
const role = useStoreValue('getRole');
|
||||
|
||||
const doReAdmit = () => {
|
||||
setIsSendingRequest(true);
|
||||
|
||||
ApplicationService.reAdmitApplication(id, reAdmitCallback, errReAdmitCallback);
|
||||
}
|
||||
|
||||
const reAdmitCallback = (resp) => {
|
||||
if (resp.status === 'SUCCESS') {
|
||||
if (toast.current && resp.message) {
|
||||
toast.current.show({
|
||||
severity: 'success',
|
||||
summary: '',
|
||||
detail: resp.message
|
||||
});
|
||||
}
|
||||
window.location.reload();
|
||||
}
|
||||
setIsSendingRequest(false);
|
||||
}
|
||||
|
||||
const errReAdmitCallback = (resp) => {
|
||||
if (toast.current && resp.message) {
|
||||
toast.current.show({
|
||||
severity: resp.status === 'SUCCESS' ? 'info' : 'error',
|
||||
summary: '',
|
||||
detail: resp.message
|
||||
});
|
||||
}
|
||||
set404FromErrorResponse(resp);
|
||||
setIsSendingRequest(false);
|
||||
}
|
||||
|
||||
return (
|
||||
['ROLE_SUPER_ADMIN', 'ROLE_INSTRUCTOR_MANAGER'].includes(role) && ['REJECTED'].includes(status)
|
||||
? <>
|
||||
<Toast ref={toast}/>
|
||||
<Button
|
||||
type="button"
|
||||
disabled={isSendingRequest}
|
||||
severity="warning"
|
||||
onClick={doReAdmit}
|
||||
label={__('Riammetti', 'gepafin')}
|
||||
icon="pi pi-arrow-circle-up" iconPos="right"/>
|
||||
</> : null
|
||||
)
|
||||
}
|
||||
|
||||
export default EvaluationReAdmit;
|
||||
@@ -54,6 +54,7 @@ import ApplicationInfo from './components/ApplicationInfo';
|
||||
import ApplicationDownloadFiles from './components/ApplicationDownloadFiles';
|
||||
import FormField from '../../components/FormField';
|
||||
import SoccorsoResendEmails from '../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
|
||||
import EvaluationReAdmit from './components/EvaluationReAdmit';
|
||||
|
||||
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
||||
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||
@@ -594,7 +595,7 @@ const DomandaEditPreInstructor = () => {
|
||||
|
||||
const shouldDisableField = useCallback((fieldName) => {
|
||||
return !['EVALUATION', 'ADMISSIBLE'].includes(data.applicationStatus)
|
||||
|| (['ADMISSIBLE'].includes(data.applicationStatus) && fieldName !== 'criteria')
|
||||
|| (['ADMISSIBLE'].includes(data.applicationStatus) && !['criteria', 'note'].includes(fieldName))
|
||||
|| (fieldName === 'files' && !isEmpty(data.amendmentDetails))
|
||||
}, [data.applicationStatus]);
|
||||
|
||||
@@ -876,11 +877,29 @@ const DomandaEditPreInstructor = () => {
|
||||
</div>
|
||||
}
|
||||
|
||||
const auxActions = () => {
|
||||
return <div className="appPageSection__actions">
|
||||
<SoccorsoResendEmails
|
||||
emailsData={emailSendResponse}
|
||||
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||
<EvaluationReAdmit id={data.applicationId} status={data.applicationStatus}/>
|
||||
</div>
|
||||
}
|
||||
|
||||
const updateEmailSendResponses = useCallback((newEmailData) => {
|
||||
const newData = wrap(data).set(['emailSendResponse'], newEmailData).value();
|
||||
setData(newData);
|
||||
}, [data]);
|
||||
|
||||
const motivationMsg = () => {
|
||||
return data.motivation && !isEmpty(data.motivation) && ['REJECTED', 'APPROVED'].includes(data.applicationStatus)
|
||||
? <div className="appPageSection__message info">
|
||||
<i className="pi pi-info-circle"></i>
|
||||
<span className="summary">{__('Motivazione:', 'gepafin')}</span>
|
||||
<span>{renderHtmlContent(data.motivation)}</span>
|
||||
</div> : null
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
let updatedFormValues = klona(formValues);
|
||||
let context = {};
|
||||
@@ -973,19 +992,21 @@ const DomandaEditPreInstructor = () => {
|
||||
? <div className="appPage__content">
|
||||
<ApplicationInfo data={data}/>
|
||||
|
||||
<div className="appPageSection">
|
||||
{motivationMsg()}
|
||||
</div>
|
||||
|
||||
<div className="appPageSection__hr">
|
||||
<span>{__('Azioni rapide', 'gepafin')}</span>
|
||||
</div>
|
||||
|
||||
<div className="appPageSection">
|
||||
{actionBtns()}
|
||||
<div className="appPageSection__actions">
|
||||
<SoccorsoResendEmails
|
||||
emailsData={emailSendResponse}
|
||||
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||
</div>
|
||||
{auxActions()}
|
||||
</div>
|
||||
|
||||
<div className="appPageSection__hr"></div>
|
||||
|
||||
<ApplicationDownloadFiles id={id}/>
|
||||
|
||||
<div className="appPageSection">
|
||||
@@ -1010,6 +1031,23 @@ const DomandaEditPreInstructor = () => {
|
||||
sourceName="evaluation"/>
|
||||
</div>
|
||||
|
||||
<div className="appPageSection">
|
||||
<h2>{__('Note', 'gepafin')}</h2>
|
||||
<div translate="no" style={{ 'width': '100%' }}>
|
||||
<Editor
|
||||
value={data.note}
|
||||
readOnly={shouldDisableField('note') || evaluationBlockedForUser(data)}
|
||||
placeholder={__('Digita qui il messagio', 'gepafin')}
|
||||
headerTemplate={header}
|
||||
onTextChange={(e) => updateEvaluationValue(
|
||||
e.htmlValue,
|
||||
['note']
|
||||
)}
|
||||
style={{ height: 80 * 3, width: '100%' }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{data.evaluationVersion === 'V2'
|
||||
? <div className="appPageSection">
|
||||
<h2>{__('Documenti allegati', 'gepafin')}</h2>
|
||||
@@ -1122,21 +1160,6 @@ const DomandaEditPreInstructor = () => {
|
||||
</div>)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>{__('Note', 'gepafin')}</h3>
|
||||
<div translate="no">
|
||||
<Editor
|
||||
value={data.note}
|
||||
readOnly={shouldDisableField('note') || evaluationBlockedForUser(data)}
|
||||
placeholder={__('Digita qui il messagio', 'gepafin')}
|
||||
headerTemplate={header}
|
||||
onTextChange={(e) => updateEvaluationValue(
|
||||
e.htmlValue,
|
||||
['note']
|
||||
)}
|
||||
style={{ height: 80 * 3, width: '100%' }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>{__('Documenti allegati', 'gepafin')}</h3>
|
||||
@@ -1255,11 +1278,7 @@ const DomandaEditPreInstructor = () => {
|
||||
|
||||
<div className="appPageSection">
|
||||
{actionBtns()}
|
||||
<div className="appPageSection__actions">
|
||||
<SoccorsoResendEmails
|
||||
emailsData={emailSendResponse}
|
||||
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||
</div>
|
||||
{auxActions()}
|
||||
</div>
|
||||
|
||||
<Dialog
|
||||
@@ -1267,7 +1286,7 @@ const DomandaEditPreInstructor = () => {
|
||||
visible={isVisibleCriterionData !== 0}
|
||||
style={{ width: '50vw' }}
|
||||
onHide={hideCriterionData}>
|
||||
{criterionDataContent}
|
||||
{criterionDataContent}
|
||||
</Dialog>
|
||||
|
||||
<Dialog
|
||||
|
||||
Reference in New Issue
Block a user