- added files field to evaluation rejection, ammendment creation and ammendment communication modal windows;

- fixed issue with filtering applications in dashboard for pre instructor;
This commit is contained in:
Vitalii Kiiko
2025-10-09 15:21:48 +02:00
parent 5cbfc11a50
commit 05281927ad
10 changed files with 443 additions and 79 deletions

View File

@@ -12,6 +12,7 @@ import AmendmentsService from '../../service/amendments-service';
// tools
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
import getFormatedFileSizeText from '../../helpers/getFormatedFileSizeText';
// components
import { Skeleton } from 'primereact/skeleton';
@@ -24,6 +25,8 @@ import { Toast } from 'primereact/toast';
import { InputSwitch } from 'primereact/inputswitch';
import ApplicationEvaluationService from '../../service/application-evaluation-service';
import { Dialog } from 'primereact/dialog';
import { FileUpload } from 'primereact/fileupload';
import { defaultMaxFileSize, mimeTypes } from '../../configData';
const SoccorsoAddInstructorManager = () => {
const isAsyncRequest = useStoreValue('isAsyncRequest');
@@ -32,8 +35,9 @@ const SoccorsoAddInstructorManager = () => {
const [data, setData] = useState({});
const [evaluationId, setEvaluationId] = useState(0);
const [formData, setFormData] = useState({});
const [isVisibleConfirmDialog, setIsVisibleConfirmDialog] = useState(false)
const [isVisibleConfirmDialog, setIsVisibleConfirmDialog] = useState(false);
const toast = useRef(null);
const ammendmentFilesRef = useRef(null);
const goToEvaluationPage = () => {
navigate(`/mie-domande/${id}`);
@@ -222,7 +226,7 @@ const SoccorsoAddInstructorManager = () => {
<div className="appPageSection columns">
<div>
<h3>{__('Pec/Email', 'gepafin')}</h3>
<div style={{ marginBottom: '30px' }} translate="no">
<div style={{marginBottom: '30px'}} translate="no">
<Editor
value={formData.note}
placeholder={__('Digita qui il messagio', 'gepafin')}
@@ -235,8 +239,65 @@ const SoccorsoAddInstructorManager = () => {
/>
</div>
<div style={{marginBottom: '30px'}}>
<div className="appForm__field">
<label>
{__('Files', 'gepafin')}
</label>
<FileUpload
ref={ammendmentFilesRef}
name="files[]"
multiple
accept={mimeTypes.map(o => o.code).join(',')}
maxFileSize={defaultMaxFileSize}
auto={false}
customUpload={true}
onSelect={(e) => {
updateEvaluationValue(e.files, 'files');
}}
onRemove={(e) => {
const updatedFiles = ammendmentFilesRef.current.getFiles();
updateEvaluationValue(updatedFiles, 'files');
}}
headerTemplate={(options) => {
const { chooseButton } = options;
return (
<div className="p-fileupload-buttonbar" data-pc-section="buttonbar">
{chooseButton}
</div>
);
}}
chooseOptions={{
label: __('Aggiungi i file', 'gepafin'),
icon: 'pi pi-plus'
}}
itemTemplate={(file, props) => {
return(
<div className="p-fileupload-row" data-pc-section="file">
<div data-pc-section="details" style={{display: 'flex', flexDirection: 'column', gap: '10px', textAlign: 'left'}}>
<div className="p-fileupload-filename" data-pc-section="filename">
{file.name}
</div>
<span data-pc-section="filesize">{getFormatedFileSizeText(file.size)}</span>
</div>
<div data-pc-section="actions">
<Button
type="button"
icon="pi pi-times"
className="p-button-rounded p-button-danger p-button-text"
onClick={() => props.onRemove()}
/>
</div>
</div>
)
}}
emptyTemplate={<p className="m-0">{__('Trascina i file qua')}</p>}
/>
</div>
</div>
<h3>{__('Tempo per la Risposta (giorni)', 'gepafin')}</h3>
<div style={{ marginBottom: '30px' }}>
<div style={{marginBottom: '30px'}}>
<InputNumber
keyfilter="int"
value={formData.responseDays}