- fixed login for confidi users;
- restyled fileselect UI;
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<label htmlFor={fieldName} className={classNames({ 'p-error': errors[fieldName] })}>
|
||||
@@ -100,7 +126,8 @@ const FileSelect = ({
|
||||
<span className="appForm__field--required">*</span> : null}
|
||||
</label>
|
||||
<div className="fileselectInner">
|
||||
<div className="fileselectInner__selectionBox">
|
||||
{addNewMode
|
||||
? <div className="fileselectInner__selectionBox">
|
||||
<ListBox multiple
|
||||
value={selectedUnconfirmed}
|
||||
onChange={(e) => setSelectedUnconfirmed(e.value)}
|
||||
@@ -110,15 +137,21 @@ const FileSelect = ({
|
||||
optionGroupChildren="items"
|
||||
className="w-full md:w-14rem"
|
||||
listStyle={{ maxHeight: '130px' }}/>
|
||||
{!isEmpty(optionsTransformed)
|
||||
{!isEmpty(selectedUnconfirmed)
|
||||
? <Button
|
||||
severity="success"
|
||||
disabled={loading}
|
||||
onClick={attachSelectedFiles}
|
||||
label={__('Conferma i file scelti', 'gepafin')}
|
||||
icon="pi pi-arrow-right" size="small" iconPos="right"/> : null}
|
||||
</div>
|
||||
{!isEmpty(optionsTransformed)
|
||||
icon="pi pi-arrow-right" size="small" iconPos="right"/>
|
||||
: <Button
|
||||
severity="success"
|
||||
outlined
|
||||
onClick={doGoBackToListOfFiles}
|
||||
label={__('Torna alla lista dei file selezionati', 'gepafin')}
|
||||
icon="pi pi-arrow-right" size="small" iconPos="right"/>}
|
||||
</div> : null}
|
||||
{!isEmpty(optionsTransformed) && !addNewMode
|
||||
? <div className="fileselectInner__selectedFiles">
|
||||
<p>{__('I file selezionati')}</p>
|
||||
<ul>
|
||||
@@ -134,6 +167,12 @@ const FileSelect = ({
|
||||
</div>
|
||||
</li>)}
|
||||
</ul>
|
||||
<Button
|
||||
severity="success"
|
||||
disabled={loading}
|
||||
onClick={() => setAddNewMode(true)}
|
||||
label={__('Aggiungi i file', 'gepafin')}
|
||||
icon="pi pi-plus" size="small" iconPos="right"/>
|
||||
</div> : null}
|
||||
</div>
|
||||
{isEmpty(optionsTransformed)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(() => {
|
||||
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) => {
|
||||
|
||||
@@ -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(() => {
|
||||
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) => {
|
||||
|
||||
@@ -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]
|
||||
]
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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(() => {
|
||||
const existingCompany = head(companies.filter(o => o.id === chosenCompanyId));
|
||||
|
||||
if (existingCompany) {
|
||||
setLoading(true);
|
||||
CompanyDocumentsService.getCompanyDocuments(chosenCompanyId, getCallback, errGetCallbacks, [
|
||||
['documentType', type]
|
||||
]);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const getCallback = (resp) => {
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(() => {
|
||||
const existingCompany = head(companies.filter(o => o.id === chosenCompanyId));
|
||||
|
||||
if (existingCompany) {
|
||||
DashboardService.getBeneficiaryStatsPage(chosenCompanyId, getStats, errGetStats);
|
||||
}
|
||||
}, [chosenCompanyId]);
|
||||
|
||||
return(
|
||||
|
||||
Reference in New Issue
Block a user