import React, { useState, useEffect, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { useNavigate, useParams } from 'react-router-dom'; import { is, isEmpty, isNil } from 'ramda'; import "quill/dist/quill.core.css"; // store import { storeGet, storeSet, useStore } from '../../store'; // tools import getNumberWithCurrency from '../../helpers/getNumberWithCurrency'; import getDateFromISOstring from '../../helpers/getDateFromISOstring'; import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; import renderHtmlContent from '../../helpers/renderHtmlContent'; // api import BandoService from '../../service/bando-service'; import FaqItemService from '../../service/faq-item-service'; import ApplicationService from '../../service/application-service'; // components import { Skeleton } from 'primereact/skeleton'; import { Accordion } from 'primereact/accordion'; import { AccordionTab } from 'primereact/accordion'; import { Button } from 'primereact/button'; import { Messages } from 'primereact/messages'; import { Message } from 'primereact/message'; import { Toast } from 'primereact/toast'; import { Editor } from 'primereact/editor'; import { Dialog } from 'primereact/dialog'; import PreferredBandoService from '../../service/preferred-bando-service'; const REACT_APP_HUB_ID = process.env.REACT_APP_HUB_ID; const BandoViewBeneficiario = () => { const isAsyncRequest = useStore().main.isAsyncRequest(); const chosenCompanyId = useStore().main.chosenCompanyId(); const { id } = useParams(); const navigate = useNavigate(); const [data, setData] = useState({}); const [newQuestion, setNewQuestion] = useState(''); const [applicationObj, setApplicationObj] = useState(true); const [isVisibleConfidiPopup, setIsVisibleConfidiPopup] = useState(false); const bandoMsgs = useRef(null); const toast = useRef(null); const displayConfidiPopup = () => { setIsVisibleConfidiPopup(true); } const hideConfidiPopup = () => { setIsVisibleConfidiPopup(false) } const scaricaModulistica = () => { if (data.confidi) { displayConfidiPopup(); } else { const bandoId = getBandoId(); BandoService.getBandoPdf(bandoId, getCallPdfCallback, errCallPdfCallback); } } const getCallPdfCallback = (data) => { const bandoId = getBandoId(); const pdfFile = new Blob([data], { type: 'application/zip' }) const url = window.URL.createObjectURL(pdfFile); const link = document.createElement('a'); link.href = url; link.setAttribute('download', `modulistica-bando-${bandoId}.zip`); document.body.appendChild(link); link.click(); link.remove(); storeSet.main.unsetAsyncRequest(); } const errCallPdfCallback = (data) => { if (toast.current) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } storeSet.main.unsetAsyncRequest(); } const getBandoId = () => { const parsed = parseInt(id) return !isNaN(parsed) ? parsed : 0; } const submitBtnLabel = () => { if (REACT_APP_HUB_ID === 't7jh5wfg9QXylNaTZkPoE') { return __('Presenta domanda', 'gepafin'); } else { if (applicationObj && applicationObj.id) { return __('Vai alla domanda', 'gepafin'); } else { return __('Presenta domanda', 'gepafin'); } } } const submitBtnIcon = () => { if (REACT_APP_HUB_ID === 't7jh5wfg9QXylNaTZkPoE') { return 'pi pi-save'; } else { if (applicationObj && applicationObj.id) { return 'pi pi-arrow-right'; } else { return 'pi pi-save'; } } } const submitApplication = () => { if (data.confidi) { if (data.id === 6 && REACT_APP_HUB_ID === 'p4lk3bcx1RStqTaIVVbXs') { if (applicationObj && applicationObj.id) { navigate(`/imieibandi/${applicationObj.id}`); } else { const bandoId = getBandoId(); ApplicationService.createApplication(bandoId, {}, createApplCallback, errCreateApplCallback, [['companyId', chosenCompanyId]]); } } else { displayConfidiPopup(); } } else { if (REACT_APP_HUB_ID === 't7jh5wfg9QXylNaTZkPoE') { const bandoId = getBandoId(); ApplicationService.createApplication(bandoId, {}, createApplCallback, errCreateApplCallback, [['companyId', chosenCompanyId]]); } else { if (applicationObj && applicationObj.id) { navigate(`/imieibandi/${applicationObj.id}`); } else { const bandoId = getBandoId(); ApplicationService.createApplication(bandoId, {}, createApplCallback, errCreateApplCallback, [['companyId', chosenCompanyId]]); } } } } const createApplCallback = (data) => { storeSet.main.unsetAsyncRequest(); if (data.status === 'SUCCESS') { navigate(`/imieibandi/${data.data.id}`); } } const errCreateApplCallback = (data) => { if (toast.current) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } if (bandoMsgs.current && data.message) { bandoMsgs.current.show([ { sticky: true, severity: 'error', summary: '', detail: data.message, closable: true } ]); } storeSet.main.unsetAsyncRequest(); } /*const saveToFavourites = () => { }*/ const submitNewQuestion = () => { if (newQuestion && chosenCompanyId && 0 !== chosenCompanyId) { if (bandoMsgs.current) { bandoMsgs.current.clear(); } const obj = { 'id': null, 'lookUpDataId': null, 'title': newQuestion, 'value': newQuestion, 'response': '', 'isVisible': false } storeSet.main.setAsyncRequest(); FaqItemService.addQuestion(id, obj, createQuestionBack, errCreateQuestionCallback, [['companyId', chosenCompanyId]]) } } const createQuestionBack = (data) => { if (data.status === 'SUCCESS') { setNewQuestion(''); if (toast.current) { toast.current.show({ severity: 'success', summary: '', detail: data.message }); } } storeSet.main.unsetAsyncRequest(); } const errCreateQuestionCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } storeSet.main.unsetAsyncRequest(); } const getBandoCallback = (data) => { if (data.status === 'SUCCESS') { setData(getFormattedBandiData(data.data)); } storeSet.main.unsetAsyncRequest(); } const errGetBandoCallback = (data) => { if (toast.current && data.message) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } const getFormattedBandiData = (data) => { data.dates = data.dates.map(v => is(String, v) ? new Date(v) : (v ? v : '')); return data; }; const getApplCallback = (data) => { if (data.status === 'SUCCESS') { if (data.data.length) { setApplicationObj(data.data[0]); } } storeSet.main.unsetAsyncRequest(); } const errGetApplCallback = (data) => { set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } const renderHeader = () => { return ( ); }; const header = renderHeader(); const addToFavourites = () => { const companyId = storeGet.main.chosenCompanyId(); const bandoId = getBandoId(); const formdData = { companyId, callId: bandoId } if (data.preferredCallId && data.preferredCallId !== 0) { PreferredBandoService.deleteFromPreferred(data.preferredCallId, removeFavCallback, errToggleFavCallback); } else { PreferredBandoService.addToPreferred(formdData, addFavCallback, errToggleFavCallback); } } const removeFavCallback = (resp) => { if (resp.status === 'SUCCESS') { const newData = { ...data, preferredCallId: null } setData(newData); } } const addFavCallback = (resp) => { if (resp.status === 'SUCCESS') { const newData = { ...data, preferredCallId: resp.data.id } setData(newData); } } const errToggleFavCallback = (data) => { set404FromErrorResponse(data); } useEffect(() => { if (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0) { const bandoId = getBandoId(); storeSet.main.setAsyncRequest(); BandoService.getBando(bandoId, getBandoCallback, errGetBandoCallback, [ ['companyId', chosenCompanyId] ]); if (REACT_APP_HUB_ID !== 't7jh5wfg9QXylNaTZkPoE') { storeSet.main.setAsyncRequest(); ApplicationService.getApplications(getApplCallback, errGetApplCallback, [ ['callId', bandoId], ['companyId', chosenCompanyId] ]); } } }, [id, chosenCompanyId]); return (
{__('Data:', 'gepafin')} {getDateFromISOstring(data.createdDate)}
{__('Importo totale', 'gepafin')} {getNumberWithCurrency(data.amount)}
{__('Importo minimo per progetto', 'gepafin')} {getNumberWithCurrency(data.amountMin)}
{__('Importo massimo per progetto', 'gepafin')} {getNumberWithCurrency(data.amountMax)}
{__('Data apertura', 'gepafin')} {getDateFromISOstring(data.dates[0])} {data.startTime}
{__('Data chiusura', 'gepafin')} {getDateFromISOstring(data.dates[1])} {data.endTime}
Email: {data.email}
{!isNil(data.phoneNumber) ?{__('Telefono', 'gepafin')}: +39 {data.phoneNumber}
: null}