- added evaluation related 'resend emails' buttons;

This commit is contained in:
Vitalii Kiiko
2025-05-13 17:16:45 +02:00
parent 25ec77151a
commit 44a914f343
4 changed files with 110 additions and 30 deletions

View File

@@ -26,6 +26,7 @@ import { Calendar } from 'primereact/calendar';
import { Button } from 'primereact/button';
import { Link, useNavigate } from 'react-router-dom';
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
import SoccorsoResendEmails from '../../../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
@@ -73,7 +74,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
const getCallback = (resp) => {
if (resp.status === 'SUCCESS') {
const { body, totalRecords,
const {
body, totalRecords,
//currentPage, totalPages, pageSize
} = resp.data;
setTotalRecordsNum(totalRecords);
@@ -114,7 +116,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
}
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) => {
@@ -130,22 +133,43 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
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) => {
if (rowData.status === 'AWAITING') {
return <Button
return <div className="appPageSection__tableActions lessGap">
<Button
severity="info"
onClick={() => handleInitiateEvaluation(rowData.id)}
label={__('Valuta', 'gepafin')}
icon="pi pi-eye"
size="small"
iconPos="right"/>
<SoccorsoResendEmails
emailsData={rowData.emailSendResponse}
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
</div>
} else {
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
? __('Valuta', '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"/>
</Link>
<SoccorsoResendEmails
emailsData={rowData.emailSendResponse}
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
</div>
}
}
@@ -192,7 +216,8 @@ const MieDomandeTableInstructorManagerAsync = ({ userId = null, statuses = [] })
const renderHeader = () => {
return (
<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>
);
};

View File

@@ -26,6 +26,7 @@ import { Calendar } from 'primereact/calendar';
import { Button } from 'primereact/button';
import { Link, useNavigate } from 'react-router-dom';
import getQueryParamsForPaginatedEndpoint from '../../../../helpers/getQueryParamsForPaginatedEndpoint';
import SoccorsoResendEmails from '../../../SoccorsoEditPreInstructor/components/SoccorsoResendEmails';
const APP_HUB_ID = process.env.REACT_APP_HUB_ID;
@@ -73,7 +74,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
const getCallback = (resp) => {
if (resp.status === 'SUCCESS') {
const { body, totalRecords,
const {
body, totalRecords,
//currentPage, totalPages, pageSize
} = resp.data;
setTotalRecordsNum(totalRecords);
@@ -114,7 +116,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
}
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) => {
@@ -130,16 +133,30 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
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) => {
console.log('status', rowData.status)
if (rowData.status === 'AWAITING') {
return <Button
return <div className="appPageSection__tableActions lessGap">
<Button
severity="info"
onClick={() => handleInitiateEvaluation(rowData.id)}
label={__('Valuta', 'gepafin')}
icon="pi pi-eye"
size="small"
iconPos="right"/>
<SoccorsoResendEmails
emailsData={rowData.emailSendResponse}
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
</div>
} else {
const label = ['OPEN', 'SOCCORSO'].includes(rowData.status) && userData.id === rowData.userId
? __('Valuta', 'gepafin')
@@ -151,13 +168,16 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
</Link>
{rowData.applicationStatus === 'REJECTED' && (
<Button
severity='success'
severity="success"
label={__('Riammetti', 'gepafin')}
icon='pi pi-arrow-circle-up'
icon="pi pi-arrow-circle-up"
size="small"
iconPos="right"
/>
)}
<SoccorsoResendEmails
emailsData={rowData.emailSendResponse}
setDataEmailsSoccorso={(updateResponse) => updateRowData(rowData.id, updateResponse)}/>
</div>
)
}
@@ -206,7 +226,8 @@ const DomandeTablePreInstructorAsync = ({ userId = null, statuses = [] }) => {
const renderHeader = () => {
return (
<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>
);
};

View File

@@ -52,6 +52,7 @@ import RepeaterFields from '../DomandaEditPreInstructor/components/RepeaterField
import ApplicationInfo from '../DomandaEditPreInstructor/components/ApplicationInfo';
import ApplicationDownloadFiles from '../DomandaEditPreInstructor/components/ApplicationDownloadFiles';
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_HUB_ID = process.env.REACT_APP_HUB_ID;
@@ -85,6 +86,7 @@ const DomandaEditInstructorManager = () => {
const [formData, setFormData] = useState([]);
const [formId, setFormId] = useState(0);
const [formInitialData, setFormInitialData] = useState(null);
const emailSendResponse = pathOr([], ['emailSendResponse'], data);
const {
control,
handleSubmit,
@@ -873,6 +875,11 @@ const DomandaEditInstructorManager = () => {
</div>
}
const updateEmailSendResponses = useCallback((newEmailData) => {
const newData = wrap(data).set(['emailSendResponse'], newEmailData).value();
setData(newData);
}, [data]);
useEffect(() => {
let updatedFormValues = klona(formValues);
let context = {};
@@ -970,6 +977,11 @@ const DomandaEditInstructorManager = () => {
<div className="appPageSection">
{actionBtns()}
<div className="appPageSection__actions">
<SoccorsoResendEmails
emailsData={emailSendResponse}
setDataEmailsSoccorso={updateEmailSendResponses}/>
</div>
</div>
<ApplicationDownloadFiles id={id}/>
@@ -1241,6 +1253,11 @@ const DomandaEditInstructorManager = () => {
<div className="appPageSection">
{actionBtns()}
<div className="appPageSection__actions">
<SoccorsoResendEmails
emailsData={emailSendResponse}
setDataEmailsSoccorso={updateEmailSendResponses}/>
</div>
</div>
<Dialog

View File

@@ -53,6 +53,7 @@ import RepeaterFields from './components/RepeaterFields';
import ApplicationInfo from './components/ApplicationInfo';
import ApplicationDownloadFiles from './components/ApplicationDownloadFiles';
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_HUB_ID = process.env.REACT_APP_HUB_ID;
@@ -86,6 +87,7 @@ const DomandaEditPreInstructor = () => {
const [formData, setFormData] = useState([]);
const [formId, setFormId] = useState(0);
const [formInitialData, setFormInitialData] = useState(null);
const emailSendResponse = pathOr([], ['emailSendResponse'], data);
const {
control,
handleSubmit,
@@ -874,6 +876,11 @@ const DomandaEditPreInstructor = () => {
</div>
}
const updateEmailSendResponses = useCallback((newEmailData) => {
const newData = wrap(data).set(['emailSendResponse'], newEmailData).value();
setData(newData);
}, [data]);
useEffect(() => {
let updatedFormValues = klona(formValues);
let context = {};
@@ -972,6 +979,11 @@ const DomandaEditPreInstructor = () => {
<div className="appPageSection">
{actionBtns()}
<div className="appPageSection__actions">
<SoccorsoResendEmails
emailsData={emailSendResponse}
setDataEmailsSoccorso={updateEmailSendResponses}/>
</div>
</div>
<ApplicationDownloadFiles id={id}/>
@@ -1243,6 +1255,11 @@ const DomandaEditPreInstructor = () => {
<div className="appPageSection">
{actionBtns()}
<div className="appPageSection__actions">
<SoccorsoResendEmails
emailsData={emailSendResponse}
setDataEmailsSoccorso={updateEmailSendResponses}/>
</div>
</div>
<Dialog