diff --git a/src/App.js b/src/App.js index 2c0deea..ad0f6ef 100644 --- a/src/App.js +++ b/src/App.js @@ -37,7 +37,7 @@ function App() { } useEffect(() => { - if (role === 'ROLE_BENEFICIARY') { + if (['ROLE_BENEFICIARY', 'ROLE_CONFIDI'].includes(role)) { const userData = storeGet.main.userData(); if (userData.companies && !isEmpty(userData.companies)) { storeSet.main.companies(userData.companies); diff --git a/src/components/FormField/components/FileSelect/index.js b/src/components/FormField/components/FileSelect/index.js index 64f70ac..ba3d0ae 100644 --- a/src/components/FormField/components/FileSelect/index.js +++ b/src/components/FormField/components/FileSelect/index.js @@ -8,6 +8,7 @@ import { ListBox } from 'primereact/listbox'; import { Button } from 'primereact/button'; import CompanyDocumentsService from '../../../../service/company-documents-service'; import { Link } from 'react-router-dom'; +import FileUploadService from '../../../../service/file-upload-service'; const FileSelect = ({ fieldName, @@ -29,6 +30,7 @@ const FileSelect = ({ const [selectedUnconfirmed, setSelectedUnconfirmed] = useState([]); const [optionsTransformed, setOptionsTransformed] = useState([]); const [loading, setLoading] = useState(false); + const [addNewMode, setAddNewMode] = useState(false); const attachSelectedFiles = useCallback(() => { const existingIds = pluck('id', stateFieldData.current); @@ -43,10 +45,12 @@ const FileSelect = ({ ['documentType', source] ]) }); + setAddNewMode(false); }, [selectedUnconfirmed]); - const removeAttached = (id) => { - console.log('stateFieldData', stateFieldData, id) + const doGoBackToListOfFiles = () => { + setSelectedUnconfirmed([]); + setAddNewMode(false); } const callback = (resp) => { @@ -62,9 +66,30 @@ const FileSelect = ({ setLoading(false); } - useEffect(() => { + const removeAttached = (id) => { + FileUploadService.deleteFile( + {}, + (data) => deleteCallback(data, id), + deleteErrorCallback, + [['id', id]] + ); + } + + const deleteCallback = (data, id) => { + if (data.status === 'SUCCESS') { + stateFieldData.current = stateFieldData.current.filter(o => id !== o.id); + setDataFn(fieldName, stateFieldData.current, { shouldValidate: true }); + saveFormCallback(); + } + } + + const deleteErrorCallback = (err) => { + console.log('err', err); + } + + /*useEffect(() => { console.log('selectedUnconfirmed', selectedUnconfirmed) - }, [selectedUnconfirmed]); + }, [selectedUnconfirmed]);*/ useEffect(() => { stateFieldData.current = defaultValue; @@ -73,6 +98,7 @@ const FileSelect = ({ useEffect(() => { if (!isEmpty(options)) { + console.log('options', options); const optionsDefault = [ { label: __('Documenti dell\'Azienda', 'gepafin'), @@ -92,7 +118,7 @@ const FileSelect = ({ useEffect(() => { stateFieldData.current = defaultValue; }, [defaultValue]); - + //console.log([...stateFieldData.current]) return ( <>
-
- setSelectedUnconfirmed(e.value)} - options={optionsTransformed} - optionLabel="name" - optionGroupLabel="label" - optionGroupChildren="items" - className="w-full md:w-14rem" - listStyle={{ maxHeight: '130px' }}/> - {!isEmpty(optionsTransformed) - ?
- {!isEmpty(optionsTransformed) + {addNewMode + ?
+ setSelectedUnconfirmed(e.value)} + options={optionsTransformed} + optionLabel="name" + optionGroupLabel="label" + optionGroupChildren="items" + className="w-full md:w-14rem" + listStyle={{ maxHeight: '130px' }}/> + {!isEmpty(selectedUnconfirmed) + ?
: null} + {!isEmpty(optionsTransformed) && !addNewMode ?

{__('I file selezionati')}

)} +
: null} {isEmpty(optionsTransformed) diff --git a/src/components/TopBarProfileMenu/index.js b/src/components/TopBarProfileMenu/index.js index 296527a..3aee326 100644 --- a/src/components/TopBarProfileMenu/index.js +++ b/src/components/TopBarProfileMenu/index.js @@ -55,7 +55,7 @@ const TopBarProfileMenu = ({ menuLeftRef }) => { command: () => { navigate('/profilo-aziendale') }, - enable: intersection(permissions, ['APPLY_CALLS']).length && companies.length > 0 + enable: intersection(permissions, ['APPLY_CALLS', 'APPLY_CONFIDI_CALLS']).length && companies.length > 0 }, { label: __('Seleziona azienda', 'gepafin'), @@ -67,7 +67,7 @@ const TopBarProfileMenu = ({ menuLeftRef }) => { command: () => { navigate('/agguingi-azienda') }, - enable: intersection(permissions, ['APPLY_CALLS']).length + enable: intersection(permissions, ['APPLY_CALLS', 'APPLY_CONFIDI_CALLS']).length }, { separator: true, diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js index 8218845..60edd5c 100644 --- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js +++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect} from 'react'; import { __, sprintf } from '@wordpress/i18n'; -import { is, uniq, isNil, isEmpty } from 'ramda'; +import { is, uniq, isNil, isEmpty, head } from 'ramda'; import { wrap } from 'object-path-immutable'; import { useNavigate } from 'react-router-dom'; @@ -37,6 +37,7 @@ const REACT_APP_HUB_ID = process.env.REACT_APP_HUB_ID; const AllBandiAccordion = ({ showOnlyPreferred = false }) => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const isAsyncRequest = useStore().main.isAsyncRequest(); const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); @@ -45,11 +46,15 @@ const AllBandiAccordion = ({ showOnlyPreferred = false }) => { const navigate = useNavigate(); useEffect(() => { - storeSet.main.setAsyncRequest(); - BandoService.getBandi(getCallback, errGetCallbacks, [ - ['companyId', chosenCompanyId], - ['onlyPreferredCall', showOnlyPreferred] - ]); + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany && !isAsyncRequest) { + storeSet.main.setAsyncRequest(); + BandoService.getBandi(getCallback, errGetCallbacks, [ + ['companyId', chosenCompanyId], + ['onlyPreferredCall', showOnlyPreferred] + ]); + } }, [chosenCompanyId]); const getCallback = (data) => { diff --git a/src/pages/BandiPreferredBeneficiario/components/AllBandiPreferredAccordion/index.js b/src/pages/BandiPreferredBeneficiario/components/AllBandiPreferredAccordion/index.js index 874f9e0..c576d1b 100644 --- a/src/pages/BandiPreferredBeneficiario/components/AllBandiPreferredAccordion/index.js +++ b/src/pages/BandiPreferredBeneficiario/components/AllBandiPreferredAccordion/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect} from 'react'; import { __ } from '@wordpress/i18n'; -import { is, uniq, isNil, isEmpty } from 'ramda'; +import { is, uniq, isNil, isEmpty, head } from 'ramda'; import { wrap } from 'object-path-immutable'; import { useNavigate } from 'react-router-dom'; @@ -30,6 +30,7 @@ import translationStrings from '../../../../translationStringsForComponents'; const AllBandiPreferredAccordion = () => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const isAsyncRequest = useStore().main.isAsyncRequest(); const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); @@ -38,12 +39,16 @@ const AllBandiPreferredAccordion = () => { const navigate = useNavigate(); useEffect(() => { - storeSet.main.setAsyncRequest(); - const userData = storeGet.main.userData(); - PreferredBandoService.getPreferredCalls(getCallback, errGetCallbacks, [ - ['companyId', chosenCompanyId], - ['userId', userData.id] - ]); + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany) { + storeSet.main.setAsyncRequest(); + const userData = storeGet.main.userData(); + PreferredBandoService.getPreferredCalls(getCallback, errGetCallbacks, [ + ['companyId', chosenCompanyId], + ['userId', userData.id] + ]); + } }, [chosenCompanyId]); const getCallback = (data) => { diff --git a/src/pages/BandoApplicationPreview/index.js b/src/pages/BandoApplicationPreview/index.js index 84c64e8..52aa372 100644 --- a/src/pages/BandoApplicationPreview/index.js +++ b/src/pages/BandoApplicationPreview/index.js @@ -328,7 +328,7 @@ const BandoApplicationPreview = () => { if (applId) { storeSet.main.setAsyncRequest(); - const queryParams = 'ROLE_BENEFICIARY' === role + const queryParams = ['ROLE_BENEFICIARY', 'ROLE_CONFIDI'].includes(role) ? [ ['companyId', chosenCompanyId] ] diff --git a/src/pages/DashboardBeneficiario/components/MyLatestSubmissionsTable/index.js b/src/pages/DashboardBeneficiario/components/MyLatestSubmissionsTable/index.js index 3cf30e7..1f5f0a7 100644 --- a/src/pages/DashboardBeneficiario/components/MyLatestSubmissionsTable/index.js +++ b/src/pages/DashboardBeneficiario/components/MyLatestSubmissionsTable/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; -import { uniq, is, isEmpty } from 'ramda'; +import { uniq, is, head } from 'ramda'; // tools import getBandoLabel from '../../../../helpers/getBandoLabel'; @@ -28,13 +28,16 @@ import { ConfirmPopup, confirmPopup } from 'primereact/confirmpopup'; const MyLatestSubmissionsTable = () => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [statuses, setStatuses] = useState([]); useEffect(() => { - if (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0) { + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany) { setLocalAsyncRequest(true); ApplicationService.getApplications(getApplCallback, errGetApplCallback, [ ['companyId', chosenCompanyId], diff --git a/src/pages/DashboardBeneficiario/index.js b/src/pages/DashboardBeneficiario/index.js index bceb0ca..7d1f625 100644 --- a/src/pages/DashboardBeneficiario/index.js +++ b/src/pages/DashboardBeneficiario/index.js @@ -5,7 +5,7 @@ import { head, isEmpty, pathOr } from 'ramda'; import NumberFlow from '@number-flow/react'; // store -import { useStore } from '../../store'; +import { storeSet, useStore } from '../../store'; // api import DashboardService from '../../service/dashboard-service'; diff --git a/src/pages/DocumentsBeneficiary/components/DocumentsTable/index.js b/src/pages/DocumentsBeneficiary/components/DocumentsTable/index.js index fad097a..9b4ff4e 100644 --- a/src/pages/DocumentsBeneficiary/components/DocumentsTable/index.js +++ b/src/pages/DocumentsBeneficiary/components/DocumentsTable/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; -import { is, uniq } from 'ramda'; +import { head, is, uniq } from 'ramda'; // store import { useStore } from '../../../../store'; @@ -26,13 +26,16 @@ import { confirmPopup, ConfirmPopup } from 'primereact/confirmpopup'; const DocumentsTable = ({ type, reload = 0 }) => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const [docs, setDocs] = useState([]); const [filters, setFilters] = useState(null); const [loading, setLoading] = useState(false); const [statuses, setStatuses] = useState([]); useEffect(() => { - if (!loading && chosenCompanyId && chosenCompanyId !== 0 && reload !== 0) { + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (!loading && existingCompany && reload !== 0) { setLoading(true); CompanyDocumentsService.getCompanyDocuments(chosenCompanyId, getCallback, errGetCallbacks, [ ['documentType', type] @@ -41,10 +44,14 @@ const DocumentsTable = ({ type, reload = 0 }) => { }, [chosenCompanyId, reload]); useEffect(() => { - setLoading(true); - CompanyDocumentsService.getCompanyDocuments(chosenCompanyId, getCallback, errGetCallbacks, [ - ['documentType', type] - ]); + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany) { + setLoading(true); + CompanyDocumentsService.getCompanyDocuments(chosenCompanyId, getCallback, errGetCallbacks, [ + ['documentType', type] + ]); + } }, []); const getCallback = (resp) => { diff --git a/src/pages/DomandeBeneficiario/components/BeneficiarioDomandeTable/index.js b/src/pages/DomandeBeneficiario/components/BeneficiarioDomandeTable/index.js index 39f0655..8a92fc7 100644 --- a/src/pages/DomandeBeneficiario/components/BeneficiarioDomandeTable/index.js +++ b/src/pages/DomandeBeneficiario/components/BeneficiarioDomandeTable/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; -import { is, isEmpty, uniq } from 'ramda'; +import { head, is, uniq } from 'ramda'; import { Link } from 'react-router-dom'; // store @@ -27,13 +27,16 @@ import translationStrings from '../../../../translationStringsForComponents'; const BeneficiarioDomandeTable = () => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); const [statuses, setStatuses] = useState([]); useEffect(() => { - if (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && !localAsyncRequest) { + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany && !localAsyncRequest) { setLocalAsyncRequest(true); ApplicationService.getApplications(getApplCallback, errGetApplCallback, [ ['companyId', chosenCompanyId], diff --git a/src/pages/StatsBeneficiary/components/BeneficiarioUltimeDomandeTable/index.js b/src/pages/StatsBeneficiary/components/BeneficiarioUltimeDomandeTable/index.js index 31c7ec9..c65d3d3 100644 --- a/src/pages/StatsBeneficiary/components/BeneficiarioUltimeDomandeTable/index.js +++ b/src/pages/StatsBeneficiary/components/BeneficiarioUltimeDomandeTable/index.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; -import { is, isEmpty, uniq } from 'ramda'; +import { head, is, uniq } from 'ramda'; // store import { useStore } from '../../../../store'; @@ -21,6 +21,7 @@ import translationStrings from '../../../../translationStringsForComponents'; const BeneficiarioUltimeDomandeTable = () => { const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const [items, setItems] = useState(null); // eslint-disable-next-line const [filters, setFilters] = useState(null); @@ -43,7 +44,9 @@ const BeneficiarioUltimeDomandeTable = () => { } useEffect(() => { - if (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0 && !localAsyncRequest) { + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany && !localAsyncRequest) { const bodyParams = getPaginationQuery( ['SOCCORSO', 'APPROVED', 'REJECTED', 'EVALUATION', 'SUBMIT'], 1 diff --git a/src/pages/StatsBeneficiary/index.js b/src/pages/StatsBeneficiary/index.js index 503393d..6643afc 100644 --- a/src/pages/StatsBeneficiary/index.js +++ b/src/pages/StatsBeneficiary/index.js @@ -1,6 +1,6 @@ import React, { useEffect, useState, useCallback } from 'react'; import { __ } from '@wordpress/i18n'; -import { isEmpty, pathOr } from 'ramda'; +import { head, isEmpty, pathOr } from 'ramda'; import NumberFlow from '@number-flow/react'; // store @@ -16,6 +16,7 @@ const StatsBeneficiary = () => { const [mainStats, setMainStats] = useState({}); const [chartStats, setChartStats] = useState({}); const chosenCompanyId = useStore().main.chosenCompanyId(); + const companies = useStore().main.companies(); const getStats = (resp) => { if (resp.status === 'SUCCESS') { @@ -31,7 +32,11 @@ const StatsBeneficiary = () => { }, [mainStats]); useEffect(() => { - DashboardService.getBeneficiaryStatsPage(chosenCompanyId, getStats, errGetStats); + const existingCompany = head(companies.filter(o => o.id === chosenCompanyId)); + + if (existingCompany) { + DashboardService.getBeneficiaryStatsPage(chosenCompanyId, getStats, errGetStats); + } }, [chosenCompanyId]); return(