- added evaluation related 'resend emails' buttons;
This commit is contained in:
@@ -26,6 +26,7 @@ import { Calendar } from 'primereact/calendar';
|
|||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Link, useNavigate } from 'react-router-dom';
|
import { Link, useNavigate } from 'react-router-dom';
|
||||||
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
|
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
|
||||||
|
import SoccorsoResendEmails from '../../../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
|
||||||
|
|
||||||
|
|
||||||
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||||
@@ -73,7 +74,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
|
|||||||
|
|
||||||
const getCallback = (resp) => {
|
const getCallback = (resp) => {
|
||||||
if (resp.status === 'SUCCESS') {
|
if (resp.status === 'SUCCESS') {
|
||||||
const { body, totalRecords,
|
const {
|
||||||
|
body, totalRecords,
|
||||||
//currentPage, totalPages, pageSize
|
//currentPage, totalPages, pageSize
|
||||||
} = resp.data;
|
} = resp.data;
|
||||||
setTotalRecordsNum(totalRecords);
|
setTotalRecordsNum(totalRecords);
|
||||||
@@ -114,7 +116,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
|
|||||||
}
|
}
|
||||||
setLazyState({ ...lazyState, filters, first: 0 });
|
setLazyState({ ...lazyState, filters, first: 0 });
|
||||||
}}
|
}}
|
||||||
itemTemplate={statusItemTemplate} placeholder={translationStrings.selectOneLabel} className="p-column-filter"/>;
|
itemTemplate={statusItemTemplate} placeholder={translationStrings.selectOneLabel}
|
||||||
|
className="p-column-filter"/>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const dateFilterTemplate = (options) => {
|
const dateFilterTemplate = (options) => {
|
||||||
@@ -130,22 +133,43 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
|
|||||||
return getFormattedDateString(rowData.evaluationEndDate);
|
return getFormattedDateString(rowData.evaluationEndDate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const updateRowData = useCallback((id, updateResponse) => {
|
||||||
|
const newItems = items.map((o) => {
|
||||||
|
if (o.id === id) {
|
||||||
|
o.emailSendResponse = updateResponse;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
})
|
||||||
|
setItems(newItems);
|
||||||
|
}, [items]);
|
||||||
|
|
||||||
const actionsBodyTemplate = (rowData) => {
|
const actionsBodyTemplate = (rowData) => {
|
||||||
if (rowData.status === 'AWAITING') {
|
if (rowData.status === 'AWAITING') {
|
||||||
return <Button
|
return <div className="appPageSection__tableActions lessGap">
|
||||||
|
<Button
|
||||||
severity="info"
|
severity="info"
|
||||||
onClick={() => handleInitiateEvaluation(rowData.id)}
|
onClick={() => handleInitiateEvaluation(rowData.id)}
|
||||||
label={__('Valuta', 'gepafin')}
|
label={__('Valuta', 'gepafin')}
|
||||||
icon="pi pi-eye"
|
icon="pi pi-eye"
|
||||||
size="small"
|
size="small"
|
||||||
iconPos="right"/>
|
iconPos="right"/>
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={rowData.emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
|
||||||
|
</div>
|
||||||
} else {
|
} else {
|
||||||
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
|
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
|
||||||
? __('Valuta', 'gepafin')
|
? __('Valuta', 'gepafin')
|
||||||
: __('Mostra', 'gepafin');
|
: __('Mostra', 'gepafin');
|
||||||
return <Link to={`/mie-domande/${rowData.applicationId}`}>
|
return <div className="appPageSection__tableActions lessGap">
|
||||||
|
<Link
|
||||||
|
to={`/mie-domande/${rowData.applicationId}`}>
|
||||||
<Button severity="info" label={label} icon="pi pi-eye" size="small" iconPos="right"/>
|
<Button severity="info" label={label} icon="pi pi-eye" size="small" iconPos="right"/>
|
||||||
</Link>
|
</Link>
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={rowData.emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +216,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
|
|||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-content-between">
|
<div className="flex justify-content-between">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
|
onClick={clearFilter}/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -268,7 +293,7 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
|
|||||||
style={{ minWidth: '7rem' }} body={statusBodyTemplate}
|
style={{ minWidth: '7rem' }} body={statusBodyTemplate}
|
||||||
filter
|
filter
|
||||||
filterMatchModeOptions={translationStrings.statusFilterOptions}
|
filterMatchModeOptions={translationStrings.statusFilterOptions}
|
||||||
filterElement={statusFilterTemplate} />
|
filterElement={statusFilterTemplate}/>
|
||||||
<Column header={__('Azioni', 'gepafin')}
|
<Column header={__('Azioni', 'gepafin')}
|
||||||
body={actionsBodyTemplate}/>
|
body={actionsBodyTemplate}/>
|
||||||
</DataTable>
|
</DataTable>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import { Calendar } from 'primereact/calendar';
|
|||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Link, useNavigate } from 'react-router-dom';
|
import { Link, useNavigate } from 'react-router-dom';
|
||||||
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
|
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
|
||||||
|
import SoccorsoResendEmails from '../../../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
|
||||||
|
|
||||||
|
|
||||||
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||||
@@ -73,7 +74,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
|
|
||||||
const getCallback = (resp) => {
|
const getCallback = (resp) => {
|
||||||
if (resp.status === 'SUCCESS') {
|
if (resp.status === 'SUCCESS') {
|
||||||
const { body, totalRecords,
|
const {
|
||||||
|
body, totalRecords,
|
||||||
//currentPage, totalPages, pageSize
|
//currentPage, totalPages, pageSize
|
||||||
} = resp.data;
|
} = resp.data;
|
||||||
setTotalRecordsNum(totalRecords);
|
setTotalRecordsNum(totalRecords);
|
||||||
@@ -114,7 +116,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
}
|
}
|
||||||
setLazyState({ ...lazyState, filters, first: 0 });
|
setLazyState({ ...lazyState, filters, first: 0 });
|
||||||
}}
|
}}
|
||||||
itemTemplate={statusItemTemplate} placeholder={translationStrings.selectOneLabel} className="p-column-filter"/>;
|
itemTemplate={statusItemTemplate} placeholder={translationStrings.selectOneLabel}
|
||||||
|
className="p-column-filter"/>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const dateFilterTemplate = (options) => {
|
const dateFilterTemplate = (options) => {
|
||||||
@@ -130,16 +133,30 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
return getFormattedDateString(rowData.evaluationEndDate);
|
return getFormattedDateString(rowData.evaluationEndDate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const updateRowData = useCallback((id, updateResponse) => {
|
||||||
|
const newItems = items.map((o) => {
|
||||||
|
if (o.id === id) {
|
||||||
|
o.emailSendResponse = updateResponse;
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
})
|
||||||
|
setItems(newItems);
|
||||||
|
}, [items]);
|
||||||
|
|
||||||
const actionsBodyTemplate = (rowData) => {
|
const actionsBodyTemplate = (rowData) => {
|
||||||
console.log('status', rowData.status)
|
|
||||||
if (rowData.status === 'AWAITING') {
|
if (rowData.status === 'AWAITING') {
|
||||||
return <Button
|
return <div className="appPageSection__tableActions lessGap">
|
||||||
|
<Button
|
||||||
severity="info"
|
severity="info"
|
||||||
onClick={() => handleInitiateEvaluation(rowData.id)}
|
onClick={() => handleInitiateEvaluation(rowData.id)}
|
||||||
label={__('Valuta', 'gepafin')}
|
label={__('Valuta', 'gepafin')}
|
||||||
icon="pi pi-eye"
|
icon="pi pi-eye"
|
||||||
size="small"
|
size="small"
|
||||||
iconPos="right"/>
|
iconPos="right"/>
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={rowData.emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
|
||||||
|
</div>
|
||||||
} else {
|
} else {
|
||||||
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
|
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
|
||||||
? __('Valuta', 'gepafin')
|
? __('Valuta', 'gepafin')
|
||||||
@@ -151,13 +168,16 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
</Link>
|
</Link>
|
||||||
{rowData.applicationStatus === 'REJECTED' && (
|
{rowData.applicationStatus === 'REJECTED' && (
|
||||||
<Button
|
<Button
|
||||||
severity='success'
|
severity="success"
|
||||||
label={__('Riammetti', 'gepafin')}
|
label={__('Riammetti', 'gepafin')}
|
||||||
icon='pi pi-arrow-circle-up'
|
icon="pi pi-arrow-circle-up"
|
||||||
size="small"
|
size="small"
|
||||||
iconPos="right"
|
iconPos="right"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={rowData.emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -206,7 +226,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
const renderHeader = () => {
|
const renderHeader = () => {
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-content-between">
|
<div className="flex justify-content-between">
|
||||||
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined onClick={clearFilter} />
|
<Button type="button" icon="pi pi-filter-slash" label={__('Pulisci', 'gepafin')} outlined
|
||||||
|
onClick={clearFilter}/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -282,7 +303,7 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
|
|||||||
style={{ minWidth: '7rem' }} body={statusBodyTemplate}
|
style={{ minWidth: '7rem' }} body={statusBodyTemplate}
|
||||||
filter
|
filter
|
||||||
filterMatchModeOptions={translationStrings.statusFilterOptions}
|
filterMatchModeOptions={translationStrings.statusFilterOptions}
|
||||||
filterElement={statusFilterTemplate} />
|
filterElement={statusFilterTemplate}/>
|
||||||
<Column header={__('Azioni', 'gepafin')}
|
<Column header={__('Azioni', 'gepafin')}
|
||||||
body={actionsBodyTemplate}/>
|
body={actionsBodyTemplate}/>
|
||||||
</DataTable>
|
</DataTable>
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import RepeaterFields from '../DomandaEditPreInstructor/components/RepeaterField
|
|||||||
import ApplicationInfo from '../DomandaEditPreInstructor/components/ApplicationInfo';
|
import ApplicationInfo from '../DomandaEditPreInstructor/components/ApplicationInfo';
|
||||||
import ApplicationDownloadFiles from '../DomandaEditPreInstructor/components/ApplicationDownloadFiles';
|
import ApplicationDownloadFiles from '../DomandaEditPreInstructor/components/ApplicationDownloadFiles';
|
||||||
import FormField from '../../components/FormField';
|
import FormField from '../../components/FormField';
|
||||||
|
import SoccorsoResendEmails from '../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
|
||||||
|
|
||||||
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
||||||
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||||
@@ -85,6 +86,7 @@ const DomandaEditInstructorManager = () => {
|
|||||||
const [formData, setFormData] = useState([]);
|
const [formData, setFormData] = useState([]);
|
||||||
const [formId, setFormId] = useState(0);
|
const [formId, setFormId] = useState(0);
|
||||||
const [formInitialData, setFormInitialData] = useState(null);
|
const [formInitialData, setFormInitialData] = useState(null);
|
||||||
|
const emailSendResponse = pathOr([], ['emailSendResponse'], data);
|
||||||
const {
|
const {
|
||||||
control,
|
control,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
@@ -873,6 +875,11 @@ const DomandaEditInstructorManager = () => {
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateEmailSendResponses = useCallback((newEmailData) => {
|
||||||
|
const newData = wrap(data).set(['emailSendResponse'], newEmailData).value();
|
||||||
|
setData(newData);
|
||||||
|
}, [data]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let updatedFormValues = klona(formValues);
|
let updatedFormValues = klona(formValues);
|
||||||
let context = {};
|
let context = {};
|
||||||
@@ -970,6 +977,11 @@ const DomandaEditInstructorManager = () => {
|
|||||||
|
|
||||||
<div className="appPageSection">
|
<div className="appPageSection">
|
||||||
{actionBtns()}
|
{actionBtns()}
|
||||||
|
<div className="appPageSection__actions">
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ApplicationDownloadFiles id={id}/>
|
<ApplicationDownloadFiles id={id}/>
|
||||||
@@ -1241,6 +1253,11 @@ const DomandaEditInstructorManager = () => {
|
|||||||
|
|
||||||
<div className="appPageSection">
|
<div className="appPageSection">
|
||||||
{actionBtns()}
|
{actionBtns()}
|
||||||
|
<div className="appPageSection__actions">
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Dialog
|
<Dialog
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import RepeaterFields from './components/RepeaterFields';
|
|||||||
import ApplicationInfo from './components/ApplicationInfo';
|
import ApplicationInfo from './components/ApplicationInfo';
|
||||||
import ApplicationDownloadFiles from './components/ApplicationDownloadFiles';
|
import ApplicationDownloadFiles from './components/ApplicationDownloadFiles';
|
||||||
import FormField from '../../components/FormField';
|
import FormField from '../../components/FormField';
|
||||||
|
import SoccorsoResendEmails from '../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
|
||||||
|
|
||||||
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
||||||
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
|
||||||
@@ -86,6 +87,7 @@ const DomandaEditPreInstructor = () => {
|
|||||||
const [formData, setFormData] = useState([]);
|
const [formData, setFormData] = useState([]);
|
||||||
const [formId, setFormId] = useState(0);
|
const [formId, setFormId] = useState(0);
|
||||||
const [formInitialData, setFormInitialData] = useState(null);
|
const [formInitialData, setFormInitialData] = useState(null);
|
||||||
|
const emailSendResponse = pathOr([], ['emailSendResponse'], data);
|
||||||
const {
|
const {
|
||||||
control,
|
control,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
@@ -874,6 +876,11 @@ const DomandaEditPreInstructor = () => {
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateEmailSendResponses = useCallback((newEmailData) => {
|
||||||
|
const newData = wrap(data).set(['emailSendResponse'], newEmailData).value();
|
||||||
|
setData(newData);
|
||||||
|
}, [data]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let updatedFormValues = klona(formValues);
|
let updatedFormValues = klona(formValues);
|
||||||
let context = {};
|
let context = {};
|
||||||
@@ -972,6 +979,11 @@ const DomandaEditPreInstructor = () => {
|
|||||||
|
|
||||||
<div className="appPageSection">
|
<div className="appPageSection">
|
||||||
{actionBtns()}
|
{actionBtns()}
|
||||||
|
<div className="appPageSection__actions">
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ApplicationDownloadFiles id={id}/>
|
<ApplicationDownloadFiles id={id}/>
|
||||||
@@ -1243,6 +1255,11 @@ const DomandaEditPreInstructor = () => {
|
|||||||
|
|
||||||
<div className="appPageSection">
|
<div className="appPageSection">
|
||||||
{actionBtns()}
|
{actionBtns()}
|
||||||
|
<div className="appPageSection__actions">
|
||||||
|
<SoccorsoResendEmails
|
||||||
|
emailsData={emailSendResponse}
|
||||||
|
setDataEmailsSoccorso={updateEmailSendResponses}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Dialog
|
<Dialog
|
||||||
|
|||||||
Reference in New Issue
Block a user