- added proper form fields for archiving document;
This commit is contained in:
@@ -44,4 +44,111 @@ export const dynamicDataOptions = {
|
|||||||
],
|
],
|
||||||
textinput: dynamicDataForTextinput,
|
textinput: dynamicDataForTextinput,
|
||||||
textarea: dynamicDataForTextinput
|
textarea: dynamicDataForTextinput
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const protocolType = [
|
||||||
|
{
|
||||||
|
'id': 1,
|
||||||
|
'name': 'PROTOCOLLO IN ENTRATA'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 2,
|
||||||
|
'name': 'PROTOCOLLO IN USCITA'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 3,
|
||||||
|
'name': 'DOCUMENTO INTERNO'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 1003,
|
||||||
|
'name': 'PROTOCOLLO INTERNO '
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export const classificationType = [
|
||||||
|
{
|
||||||
|
'idClassificazione': 101,
|
||||||
|
'name': 'BILANCIO',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 102,
|
||||||
|
'name': 'DICHHIARAZIONE DEI REDDITI',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 103,
|
||||||
|
'name': 'SITUAZIONE CONTABILE',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 104,
|
||||||
|
'name': 'PROSPETTO CONTO ECONOMICO',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 105,
|
||||||
|
'name': 'CENTRALE DEI RISCHI',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 106,
|
||||||
|
'name': 'RELAZIONE AZIENDALE ILLUSTRATIVA (MOD R1C, R1I, R1R, R1R A SECONDO DEI ',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 107,
|
||||||
|
'name': 'DOCUMENTO IDENTITA\'',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 108,
|
||||||
|
'name': 'MODELLO SP1',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 109,
|
||||||
|
'name': 'PRIVACY',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 110,
|
||||||
|
'name': 'DOCUMENTAZIONE CHE ATTESTA POSSIBILITA\' DI RILASCIARE GAA FAVORE',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 111,
|
||||||
|
'name': 'MODELLO AR1 D.LG 231/2007',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 112,
|
||||||
|
'name': 'DOCUMENTO IDENTITA\' FIRMATORIO DICHHIARAZIONE SOSTITUTIVA',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 113,
|
||||||
|
'name': 'PRIVACY FIRMATARIO DICHHIARAZIONE SOSTITUTIVA',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 114,
|
||||||
|
'name': 'NULLAOSTA ANTIMAFIA',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 201,
|
||||||
|
'name': 'LETTERA ESITO DELIBERA',
|
||||||
|
'idTipoprotocollo': 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 202,
|
||||||
|
'name': 'LETTERA DI GARANZIA',
|
||||||
|
'idTipoprotocollo': 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'idClassificazione': 203,
|
||||||
|
'name': 'GENERICO',
|
||||||
|
'idTipoprotocollo': 3
|
||||||
|
}
|
||||||
|
];
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useRef, useState } from 'react';
|
||||||
import { __ } from '@wordpress/i18n';
|
import { __ } from '@wordpress/i18n';
|
||||||
import { isEmpty } from 'ramda';
|
import { isEmpty } from 'ramda';
|
||||||
import { wrap } from 'object-path-immutable';
|
import { wrap } from 'object-path-immutable';
|
||||||
@@ -9,24 +9,37 @@ import { Dialog } from 'primereact/dialog';
|
|||||||
import { InputTextarea } from 'primereact/inputtextarea';
|
import { InputTextarea } from 'primereact/inputtextarea';
|
||||||
import { Dropdown } from 'primereact/dropdown';
|
import { Dropdown } from 'primereact/dropdown';
|
||||||
import { classNames } from 'primereact/utils';
|
import { classNames } from 'primereact/utils';
|
||||||
|
import { InputSwitch } from 'primereact/inputswitch';
|
||||||
|
import { InputText } from 'primereact/inputtext';
|
||||||
|
|
||||||
const ArchiveDocument = ({ ndg = '', fileId = 0 }) => {
|
import { classificationType, protocolType } from '../../../../configData';
|
||||||
|
import AppointmentService from '../../../../service/appointment-service';
|
||||||
|
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
||||||
|
import { storeSet } from '../../../../store';
|
||||||
|
import { Toast } from 'primereact/toast';
|
||||||
|
|
||||||
|
const ArchiveDocument = ({ applicationId, ndg = '', fileId = 0 }) => {
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [isVisibleDialog, setIsVisibleDialog] = useState(false);
|
const [isVisibleDialog, setIsVisibleDialog] = useState(false);
|
||||||
const [modalData, setModalData] = useState({});
|
const [modalData, setModalData] = useState({});
|
||||||
|
const [types, setTypes] = useState([]);
|
||||||
const [categories, setCategories] = useState([]);
|
const [categories, setCategories] = useState([]);
|
||||||
|
const toast = useRef(null);
|
||||||
|
|
||||||
const openArchivationModal = () => {
|
const openArchivationModal = () => {
|
||||||
setIsVisibleDialog(true);
|
setIsVisibleDialog(true);
|
||||||
setModalData({
|
setModalData({
|
||||||
description: '',
|
descrizione: '',
|
||||||
categoryId: 0,
|
idTipoProtocollo: 0,
|
||||||
|
idClassificazione: 0,
|
||||||
|
flagDaFirmare: false,
|
||||||
|
email: '',
|
||||||
fileId
|
fileId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const headerDialog = () => {
|
const headerDialog = () => {
|
||||||
return <span>{__('Archive document', 'gepafin')}</span>;
|
return <span>{__('Archiviazione del documento', 'gepafin')}</span>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const hideDialog = () => {
|
const hideDialog = () => {
|
||||||
@@ -50,56 +63,141 @@ const ArchiveDocument = ({ ndg = '', fileId = 0 }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const submitData = () => {
|
const submitData = () => {
|
||||||
console.log('submitData', modalData)
|
if (
|
||||||
|
modalData.idTipoProtocollo !== 0 && modalData.idClassificazione !== 0
|
||||||
|
&& !isEmpty(modalData.descrizione) && !isEmpty(modalData.email)
|
||||||
|
) {
|
||||||
|
setLoading(true);
|
||||||
|
const submitData = {
|
||||||
|
'input': {
|
||||||
|
'idTipoProtocollo': modalData.idTipoProtocollo,
|
||||||
|
'idClassificazione': modalData.idClassificazione,
|
||||||
|
'flagDaFirmare': modalData.flagDaFirmare,
|
||||||
|
'descrizione': modalData.descrizione,
|
||||||
|
'attributes': {
|
||||||
|
'ndg': ndg,
|
||||||
|
'email': modalData.email
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('submitData', submitData);
|
||||||
|
//AppointmentService.archiveDocument(applicationId, fileId, submitData, submitCallback, errSubmitCallback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const submitCallback = (data) => {
|
||||||
|
if (data.status === 'SUCCESS') {
|
||||||
|
console.log(data.data);
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
const errSubmitCallback = (data) => {
|
||||||
|
if (toast.current && data.message) {
|
||||||
|
toast.current.show({
|
||||||
|
severity: 'error',
|
||||||
|
summary: '',
|
||||||
|
detail: data.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
set404FromErrorResponse(data);
|
||||||
|
setLoading(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setCategories([
|
const newModalData = {
|
||||||
{value: 1, label: 'Type 1'},
|
...modalData,
|
||||||
{value: 2, label: 'Type 2'},
|
idClassificazione: 0
|
||||||
])
|
};
|
||||||
|
setModalData(newModalData);
|
||||||
|
setCategories(classificationType
|
||||||
|
.filter(o => o.idTipoprotocollo === modalData.idTipoProtocollo)
|
||||||
|
.map(o => ({ value: o.idClassificazione, label: o.name })));
|
||||||
|
}, [modalData.idTipoProtocollo])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setTypes(protocolType.map(o => ({ value: o.id, label: o.name })));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (!isEmpty(ndg)
|
||||||
<>
|
? <>
|
||||||
{!isEmpty(ndg)
|
<Toast ref={toast}/>
|
||||||
? <Button icon="pi pi-file-export"
|
<Button icon="pi pi-file-export"
|
||||||
rounded
|
rounded
|
||||||
onClick={openArchivationModal}
|
onClick={openArchivationModal}
|
||||||
outlined
|
outlined
|
||||||
severity="info"
|
severity="info"
|
||||||
aria-label={__('Mostra', 'gepafin')}/>
|
aria-label={__('Mostra', 'gepafin')}/>
|
||||||
: null}
|
<Dialog
|
||||||
<Dialog
|
visible={isVisibleDialog}
|
||||||
visible={isVisibleDialog}
|
modal
|
||||||
modal
|
header={headerDialog}
|
||||||
header={headerDialog}
|
footer={footerDialog}
|
||||||
footer={footerDialog}
|
style={{ maxWidth: '600px', width: '100%' }}
|
||||||
style={{ maxWidth: '600px', width: '100%' }}
|
onHide={hideDialog}>
|
||||||
onHide={hideDialog}>
|
<div className="appForm__field">
|
||||||
<div className="appForm__field">
|
<label
|
||||||
<label className={classNames({ 'p-error': !modalData.categoryId || modalData.categoryId === 0 })}>
|
className={classNames({ 'p-error': !modalData.idTipoProtocollo || modalData.idTipoProtocollo === 0 })}>
|
||||||
{__('Classificazione', 'gepafin')}*
|
{__('Tipo di protocollo', 'gepafin')}*
|
||||||
</label>
|
</label>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
value={modalData.categoryId}
|
value={modalData.idTipoProtocollo}
|
||||||
invalid={!modalData.categoryId || modalData.categoryId === 0}
|
invalid={!modalData.idTipoProtocollo || modalData.idTipoProtocollo === 0}
|
||||||
onChange={(e) => setValue('categoryId', e.value)}
|
onChange={(e) => setValue('idTipoProtocollo', e.value)}
|
||||||
options={categories}/>
|
options={types}/>
|
||||||
</div>
|
</div>
|
||||||
<div className="appForm__field">
|
<div className="appForm__field">
|
||||||
<label className={classNames({ 'p-error': isEmpty(modalData.description) })}>
|
<label
|
||||||
{__('Descrizione', 'gepafin')}
|
className={classNames({ 'p-error': !modalData.idClassificazione || modalData.idClassificazione === 0 })}>
|
||||||
</label>
|
{__('Classificazione', 'gepafin')}*
|
||||||
<InputTextarea
|
</label>
|
||||||
value={modalData.description}
|
<Dropdown
|
||||||
invalid={isEmpty(modalData.description)}
|
value={modalData.idClassificazione}
|
||||||
onChange={(e) => setValue('description', e.target.value)}
|
invalid={!modalData.idClassificazione || modalData.idClassificazione === 0}
|
||||||
rows={3}
|
onChange={(e) => setValue('idClassificazione', e.value)}
|
||||||
cols={30}/>
|
options={categories}/>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
<div className="appForm__field">
|
||||||
</>
|
<label>
|
||||||
|
{__('Da firmare?', 'gepafin')}
|
||||||
|
</label>
|
||||||
|
<InputSwitch
|
||||||
|
checked={modalData.flagDaFirmare}
|
||||||
|
onChange={(e) => setValue('flagDaFirmare', e.value)}/>
|
||||||
|
</div>
|
||||||
|
<div className="appForm__field">
|
||||||
|
<label className={classNames({ 'p-error': isEmpty(modalData.descrizione) })}>
|
||||||
|
{__('Descrizione', 'gepafin')}*
|
||||||
|
</label>
|
||||||
|
<InputTextarea
|
||||||
|
value={modalData.descrizione}
|
||||||
|
invalid={isEmpty(modalData.descrizione)}
|
||||||
|
onChange={(e) => setValue('descrizione', e.target.value)}
|
||||||
|
rows={3}
|
||||||
|
cols={30}/>
|
||||||
|
</div>
|
||||||
|
<div className="appForm__field">
|
||||||
|
<label>
|
||||||
|
{__('NDG', 'gepafin')}*
|
||||||
|
</label>
|
||||||
|
<InputText
|
||||||
|
value={ndg}
|
||||||
|
disabled
|
||||||
|
onChange={() => {
|
||||||
|
}}/>
|
||||||
|
</div>
|
||||||
|
<div className="appForm__field">
|
||||||
|
<label className={classNames({ 'p-error': isEmpty(modalData.email) })}>
|
||||||
|
{__('Email', 'gepafin')}*
|
||||||
|
</label>
|
||||||
|
<InputText
|
||||||
|
value={modalData.email}
|
||||||
|
keyfilter="email"
|
||||||
|
invalid={isEmpty(modalData.email)}
|
||||||
|
onChange={(e) => setValue('email', e.target.value)}/>
|
||||||
|
</div>
|
||||||
|
</Dialog>
|
||||||
|
</> : null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import { InputText } from 'primereact/inputtext';
|
|||||||
import DownloadApplicationArchive from './components/DownloadApplicationArchive';
|
import DownloadApplicationArchive from './components/DownloadApplicationArchive';
|
||||||
import DownloadCompanyDelegation from './components/DownloadCompanyDelegation';
|
import DownloadCompanyDelegation from './components/DownloadCompanyDelegation';
|
||||||
import DownloadSignedApplication from './components/DownloadSignedApplication';
|
import DownloadSignedApplication from './components/DownloadSignedApplication';
|
||||||
|
import AppointmentService from '../../service/appointment-service';
|
||||||
|
|
||||||
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
|
||||||
|
|
||||||
@@ -360,7 +361,30 @@ const DomandaEditPreInstructor = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const doCheckNDG = () => {
|
const doCheckNDG = () => {
|
||||||
// TODO
|
storeSet.main.setAsyncRequest();
|
||||||
|
doSaveDraft();
|
||||||
|
setTimeout(() => {
|
||||||
|
AppointmentService.getNdg(id, getNdgCallback, errGetNdgCallback);
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
const getNdgCallback = (data) => {
|
||||||
|
if (data.status === 'SUCCESS') {
|
||||||
|
console.log('data', data.data);
|
||||||
|
}
|
||||||
|
storeSet.main.unsetAsyncRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
const errGetNdgCallback = (data) => {
|
||||||
|
if (toast.current && data.message) {
|
||||||
|
toast.current.show({
|
||||||
|
severity: 'error',
|
||||||
|
summary: '',
|
||||||
|
detail: data.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
set404FromErrorResponse(data);
|
||||||
|
storeSet.main.unsetAsyncRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
const doCreateAppointment = () => {
|
const doCreateAppointment = () => {
|
||||||
@@ -595,7 +619,7 @@ const DomandaEditPreInstructor = () => {
|
|||||||
}}>
|
}}>
|
||||||
<span>{k.name}</span>
|
<span>{k.name}</span>
|
||||||
<div className="appPageSection__iconActions">
|
<div className="appPageSection__iconActions">
|
||||||
<ArchiveDocument ndg={data.ndg} fileId={k.id}/>
|
<ArchiveDocument ndg={data.ndg} applicationId={id} fileId={k.id}/>
|
||||||
<Button icon="pi pi-eye" rounded
|
<Button icon="pi pi-eye" rounded
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
window.open(encodeURI(k.filePath), '_blank').focus()
|
window.open(encodeURI(k.filePath), '_blank').focus()
|
||||||
|
|||||||
14
src/service/appointment-service.js
Normal file
14
src/service/appointment-service.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { NetworkService } from './network-service';
|
||||||
|
|
||||||
|
const API_BASE_URL = process.env.REACT_APP_API_EXECUTION_ADDRESS;
|
||||||
|
|
||||||
|
export default class AppointmentService {
|
||||||
|
|
||||||
|
static getNdg = (id, callback, errCallback, queryParams) => {
|
||||||
|
NetworkService.get(`${API_BASE_URL}/appointment/application/${id}/check-ndg`, callback, errCallback, queryParams);
|
||||||
|
};
|
||||||
|
|
||||||
|
static archiveDocument = (applicationId, documentId, body, callback, errCallback, queryParams) => {
|
||||||
|
NetworkService.post(`${API_BASE_URL}/appointment/application/${applicationId}/document/${documentId}`, {}, callback, errCallback, queryParams);
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user