- updated logic based on new data from API;

- updated page of archived non completed application for beneficiary;
- fixed issue creating soccorso;
This commit is contained in:
Vitalii Kiiko
2024-11-12 15:58:41 +01:00
parent 91c2a37a5b
commit 942a45387d
6 changed files with 142 additions and 71 deletions

View File

@@ -26,12 +26,14 @@ import { classNames } from 'primereact/utils';
import { Dialog } from 'primereact/dialog';
import { InputText } from 'primereact/inputtext';
import { InputTextarea } from 'primereact/inputtextarea';
import ApplicationService from '../../service/application-service';
const DomandaBeneficiario = () => {
const isAsyncRequest = useStore().main.isAsyncRequest();
const { id } = useParams();
const navigate = useNavigate();
const [data, setData] = useState({});
const [dataAppl, setDataAppl] = useState({});
const [comms, setComms] = useState([]);
const [isVisibleNewCommDialog, setIsVisibleNewCommDialog] = useState(false);
const [newCommData, setNewCommData] = useState({});
@@ -43,14 +45,25 @@ const DomandaBeneficiario = () => {
navigate(`/domande`);
}
useEffect(() => {
const parsedId = parseInt(id);
const entityId = !isNaN(parsedId) ? parsedId : 0;
AmendmentsService.getSoccorsoByApplId(entityId, getCallback, errGetCallback, [
['statuses', 'AWAITING']
]);
}, [id]);
const getCallback = (data) => {
if (data.status === 'SUCCESS') {
if (data.data.length) {
setData(getFormattedData(data.data[0]));
CommunicationService.getCommsByAmendmentId(data.data[0].id, getCommsCallback, errGetCommsCallback);
storeSet.main.unsetAsyncRequest();
} else {
ApplicationService.getApplication(id, getApplCallback, errGetCallback)
}
}
storeSet.main.unsetAsyncRequest();
}
const errGetCallback = (data) => {
@@ -65,6 +78,13 @@ const DomandaBeneficiario = () => {
storeSet.main.unsetAsyncRequest();
}
const getApplCallback = (data) => {
if (data.status === 'SUCCESS') {
setDataAppl(getFormattedData(data.data));
}
storeSet.main.unsetAsyncRequest();
}
const getCommsCallback = (data) => {
if (data.status === 'SUCCESS') {
setComms(data.data.commentsList.map(o => getFormattedCommsData(o)));
@@ -85,6 +105,7 @@ const DomandaBeneficiario = () => {
}
const getFormattedData = (data) => {
data.submissionDate = is(String, data.submissionDate) ? new Date(data.submissionDate) : (data.submissionDate ? data.submissionDate : '');
data.startDate = is(String, data.startDate) ? new Date(data.startDate) : (data.startDate ? data.startDate : '');
data.expirationDate = is(String, data.expirationDate) ? new Date(data.expirationDate) : (data.expirationDate ? data.expirationDate : '');
return data;
@@ -165,19 +186,17 @@ const DomandaBeneficiario = () => {
setIsLoadingCommunication(false);
}
useEffect(() => {
const parsedId = parseInt(id);
const entityId = !isNaN(parsedId) ? parsedId : 0;
AmendmentsService.getSoccorsoByApplId(entityId, getCallback, errGetCallback, [
['statuses', 'AWAITING']
]);
}, [id]);
return (
<div className="appPage">
<div className="appPage__pageHeader">
<h1>{sprintf(__('Soccorso Istruttorio: richiesta integrazione documenti per domanda #%s', 'gepafin'), id)}</h1>
{data.id
? <h1>
{sprintf(__('Soccorso Istruttorio: richiesta integrazione documenti per domanda #%s', 'gepafin'), id)}
</h1> : null}
{dataAppl.id
? <h1>
{sprintf(__('Dettagli: domanda #%s', 'gepafin'), dataAppl.id)}
</h1> : null}
</div>
<div className="appPage__spacer"></div>
@@ -196,7 +215,8 @@ const DomandaBeneficiario = () => {
<div className="appPage__spacer"></div>
<div className="appPage__content">
<div className="appPageSection__withBorder columns">
{data.id
? <div className="appPageSection__withBorder columns">
<p className="appPageSection__pMeta">
<span>{__('ID domanda', 'gepafin')}</span>
<span>{data.applicationId}</span>
@@ -221,9 +241,37 @@ const DomandaBeneficiario = () => {
<span>{__('Stato', 'gepafin')}</span>
<span>{getBandoLabel(data.status)}</span>
</p>
</div>
</div> : null}
{dataAppl.id
? <div className="appPageSection__withBorder columns">
<p className="appPageSection__pMeta">
<span>{__('ID domanda', 'gepafin')}</span>
<span>{dataAppl.id}</span>
</p>
<p className="appPageSection__pMeta">
<span>{__('Bando', 'gepafin')}</span>
<span>{dataAppl.callTitle}</span>
</p>
<p className="appPageSection__pMeta">
<span>{__('Azienda', 'gepafin')}</span>
<span>{dataAppl.companyName}</span>
</p>
<p className="appPageSection__pMeta">
<span>{__('Inviato', 'gepafin')}</span>
<span>{getDateFromISOstring(dataAppl.submissionDate)}</span>
</p>
<p className="appPageSection__pMeta">
<span>{__('Protocolo', 'gepafin')}</span>
<span>{dataAppl.protocolNumber}</span>
</p>
<p className="appPageSection__pMeta">
<span>{__('Stato', 'gepafin')}</span>
<span>{getBandoLabel(dataAppl.status)}</span>
</p>
</div> : null}
<div className="appPageSection">
{data.id
? <div className="appPageSection">
<h2>{__('Dettagli Richiesta', 'gepafin')}</h2>
<h3>{__('Documenti Richiesti', 'gepafin')}</h3>
<ol className="appPageSection__list">
@@ -233,17 +281,19 @@ const DomandaBeneficiario = () => {
<span>{o.label}</span>
</li>) : null}
</ol>
</div>
</div> : null}
<div className="appPageSection">
{data.id
? <div className="appPageSection">
<h3>{__('Note e spiegazioni', 'gepafin')}</h3>
<div className="appPageSection__withBorder grey ql-editor"
style={{ minHeight: '200px' }}>
{renderHtmlContent(data.note)}
</div>
</div>
</div> : null}
<div className="appPageSection">
{data.id
? <div className="appPageSection">
<h2>{__('Comunicazioni', 'gepafin')}</h2>
<table className="myTable">
<thead className="myThead">
@@ -277,22 +327,24 @@ const DomandaBeneficiario = () => {
type="button"
label={__('Aggiungi Comunicazione', 'gepafin')}
icon="pi pi-plus" iconPos="right"/>
</div>
</div> : null}
<div className="appPageSection__message warning">
{data.id
? <div className="appPageSection__message warning">
<i className="pi pi-exclamation-triangle"></i>
<span className="summary">{__('Attenzione', 'gepafin')}</span>
<span>{__('Inviare la documentazione richiesta completa delle integrazioni esclusivamente via PEC. In caso contarrio lintegrazione non può essere ritenuta valida.', 'gepafin')}</span>
</div>
</div> : null}
<div className="appPageSection">
<div className="appPageSection__actions">
<Button
{data.id
? <Button
type="button"
disabled={isAsyncRequest}
onClick={() => setIsVisibleEmailDialog(true)}
label={__('Invia documenti via PEC', 'gepafin')}
icon="pi pi-envelope" iconPos="right"/>
icon="pi pi-envelope" iconPos="right"/> : null}
<Button
type="button"
outlined