- implemented functionality of adding to preferred calls;
This commit is contained in:
@@ -2,14 +2,18 @@ import React, { useState, useEffect} from 'react';
|
|||||||
import { __ } from '@wordpress/i18n';
|
import { __ } from '@wordpress/i18n';
|
||||||
import { is, uniq, isNil } from 'ramda';
|
import { is, uniq, isNil } from 'ramda';
|
||||||
import { wrap } from 'object-path-immutable';
|
import { wrap } from 'object-path-immutable';
|
||||||
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
// store
|
// store
|
||||||
import { storeSet, useStore } from '../../../../store';
|
import { storeGet, storeSet, useStore } from '../../../../store';
|
||||||
|
|
||||||
// tools
|
// tools
|
||||||
import getBandoSeverity from '../../../../helpers/getBandoSeverity';
|
import getBandoSeverity from '../../../../helpers/getBandoSeverity';
|
||||||
import getBandoLabel from '../../../../helpers/getBandoLabel';
|
import getBandoLabel from '../../../../helpers/getBandoLabel';
|
||||||
import getDateFromISOstring from '../../../../helpers/getDateFromISOstring';
|
import getDateFromISOstring from '../../../../helpers/getDateFromISOstring';
|
||||||
|
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
||||||
|
import getNumberWithCurrency from '../../../../helpers/getNumberWithCurrency';
|
||||||
|
import renderHtmlContent from '../../../../helpers/renderHtmlContent';
|
||||||
|
|
||||||
// api
|
// api
|
||||||
import BandoService from '../../../../service/bando-service';
|
import BandoService from '../../../../service/bando-service';
|
||||||
@@ -20,11 +24,8 @@ import { Column } from 'primereact/column';
|
|||||||
import { Dropdown } from 'primereact/dropdown';
|
import { Dropdown } from 'primereact/dropdown';
|
||||||
import { Tag } from 'primereact/tag';
|
import { Tag } from 'primereact/tag';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
import getNumberWithCurrency from '../../../../helpers/getNumberWithCurrency';
|
|
||||||
import renderHtmlContent from '../../../../helpers/renderHtmlContent';
|
|
||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import PreferredBandoService from '../../../../service/preferred-bando-service';
|
||||||
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
|
||||||
|
|
||||||
|
|
||||||
const AllBandiAccordion = () => {
|
const AllBandiAccordion = () => {
|
||||||
@@ -92,23 +93,54 @@ const AllBandiAccordion = () => {
|
|||||||
return <Tag value={getBandoLabel(option)} severity={getBandoSeverity(option)} />;
|
return <Tag value={getBandoLabel(option)} severity={getBandoSeverity(option)} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*const addToFavourites = () => {
|
const addToFavourites = (id, preferredId = 0) => {
|
||||||
console.log('addToFavourites');
|
const companyId = storeGet.main.chosenCompanyId()
|
||||||
}*/
|
const data = {
|
||||||
|
companyId,
|
||||||
|
callId: id
|
||||||
|
}
|
||||||
|
if (preferredId !== 0) {
|
||||||
|
// TODO implement removing from preferrenced
|
||||||
|
//PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback);
|
||||||
|
} else {
|
||||||
|
PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleFavCallback = (data) => {
|
||||||
|
if (data.status === 'SUCCESS') {
|
||||||
|
const newItems = items.map((o) => {
|
||||||
|
if (o.id === data.data.callId) {
|
||||||
|
return {
|
||||||
|
...o,
|
||||||
|
preferred: data.data.id
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setItems(newItems)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const errToggleFavCallback = (data) => {
|
||||||
|
set404FromErrorResponse(data);
|
||||||
|
}
|
||||||
|
|
||||||
const goToBandoPage = (id) => {
|
const goToBandoPage = (id) => {
|
||||||
navigate(`/bandi/${id}`)
|
navigate(`/bandi/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*const actionsBodyTemplate = (rowData) => {
|
const actionsBodyTemplate = (rowData) => {
|
||||||
return <div className="appPageSection__tableActions">
|
return <div className="appPageSection__tableActions">
|
||||||
<button type="button"
|
<button type="button"
|
||||||
className="appPageSection__addToFavourites"
|
className="appPageSection__addToFavourites"
|
||||||
onClick={() => addToFavourites(rowData.id)}>
|
data-active={rowData.preferred}
|
||||||
|
onClick={() => addToFavourites(rowData.id, rowData.preferred)}>
|
||||||
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
|
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
}*/
|
}
|
||||||
|
|
||||||
const rowExpansionTemplate = (data) => {
|
const rowExpansionTemplate = (data) => {
|
||||||
return (
|
return (
|
||||||
@@ -151,10 +183,10 @@ const AllBandiAccordion = () => {
|
|||||||
<Column header={__('Importo totale', 'gepafin')} filterField="amount"
|
<Column header={__('Importo totale', 'gepafin')} filterField="amount"
|
||||||
style={{ minWidth: '10rem' }} body={amountBodyTemplate} sortable/>
|
style={{ minWidth: '10rem' }} body={amountBodyTemplate} sortable/>
|
||||||
<Column field="status" header={__('Stato', 'gepafin')} filterMenuStyle={{ width: '14rem' }}
|
<Column field="status" header={__('Stato', 'gepafin')} filterMenuStyle={{ width: '14rem' }}
|
||||||
style={{ width: '120px' }} body={statusBodyTemplate} filter sortable
|
style={{ width: '8rem' }} body={statusBodyTemplate} filter sortable
|
||||||
filterElement={statusFilterTemplate}/>
|
filterElement={statusFilterTemplate}/>
|
||||||
<Column header={__('Azioni', 'gepafin')}
|
<Column header={__('Azioni', 'gepafin')}
|
||||||
style={{ width: '120px' }}
|
style={{ width: '8rem' }}
|
||||||
body={actionsBodyTemplate}/>
|
body={actionsBodyTemplate}/>
|
||||||
</DataTable>
|
</DataTable>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { __ } from '@wordpress/i18n';
|
import { __ } from '@wordpress/i18n';
|
||||||
import { useNavigate } from 'react-router-dom';
|
|
||||||
|
|
||||||
// components
|
// components
|
||||||
import AllBandiAccordion from './components/AllBandiAccordion';
|
import AllBandiAccordion from './components/AllBandiAccordion';
|
||||||
import { Button } from 'primereact/button';
|
|
||||||
|
|
||||||
const BandiBeneficiario = () => {
|
const BandiBeneficiario = () => {
|
||||||
return(
|
return(
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { uniq } from 'ramda';
|
|||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
// store
|
// store
|
||||||
import { storeSet } from '../../../../store';
|
import { storeGet, storeSet } from '../../../../store';
|
||||||
|
|
||||||
// api
|
// api
|
||||||
import BandoService from '../../../../service/bando-service';
|
import BandoService from '../../../../service/bando-service';
|
||||||
@@ -19,6 +19,8 @@ import { InputIcon } from 'primereact/inputicon';
|
|||||||
import { Button } from 'primereact/button';
|
import { Button } from 'primereact/button';
|
||||||
import { Calendar } from 'primereact/calendar';
|
import { Calendar } from 'primereact/calendar';
|
||||||
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
|
||||||
|
import PreferredBandoService from '../../../../service/preferred-bando-service';
|
||||||
|
import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
|
||||||
|
|
||||||
|
|
||||||
const LatestBandiTable = () => {
|
const LatestBandiTable = () => {
|
||||||
@@ -29,7 +31,7 @@ const LatestBandiTable = () => {
|
|||||||
const [statuses, setStatuses] = useState([]);
|
const [statuses, setStatuses] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
storeSet.main.setAsyncRequest();
|
setLoading(true);
|
||||||
BandoService.getBandi(getCallback, errGetCallbacks);
|
BandoService.getBandi(getCallback, errGetCallbacks);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -40,16 +42,47 @@ const LatestBandiTable = () => {
|
|||||||
setStatuses(uniq(data.data.map(o => o.status)))
|
setStatuses(uniq(data.data.map(o => o.status)))
|
||||||
initFilters();
|
initFilters();
|
||||||
}
|
}
|
||||||
storeSet.main.unsetAsyncRequest();
|
setLoading(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const errGetCallbacks = (data) => {
|
const errGetCallbacks = (data) => {
|
||||||
console.log('errGetCallbacks', data)
|
set404FromErrorResponse(data);
|
||||||
storeSet.main.unsetAsyncRequest();
|
setLoading(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const addToFavourites = (id) => {
|
const addToFavourites = (id, preferredId = 0) => {
|
||||||
|
const companyId = storeGet.main.chosenCompanyId()
|
||||||
|
const data = {
|
||||||
|
companyId,
|
||||||
|
callId: id
|
||||||
|
}
|
||||||
|
setLoading(true);
|
||||||
|
if (preferredId !== 0) {
|
||||||
|
// TODO implement removing from preferrenced
|
||||||
|
//PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback);
|
||||||
|
} else {
|
||||||
|
PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleFavCallback = (data) => {
|
||||||
|
if (data.status === 'SUCCESS') {
|
||||||
|
const newItems = items.map((o) => {
|
||||||
|
if (o.id === data.data.callId) {
|
||||||
|
return {
|
||||||
|
...o,
|
||||||
|
preferred: data.data.id
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setItems(newItems)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const errToggleFavCallback = (data) => {
|
||||||
|
set404FromErrorResponse(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
const getFormattedData = (data) => {
|
const getFormattedData = (data) => {
|
||||||
@@ -138,7 +171,8 @@ const LatestBandiTable = () => {
|
|||||||
return <div className="appPageSection__tableActions">
|
return <div className="appPageSection__tableActions">
|
||||||
<button type="button"
|
<button type="button"
|
||||||
className="appPageSection__addToFavourites"
|
className="appPageSection__addToFavourites"
|
||||||
onClick={() => addToFavourites(rowData.id)}>
|
data-active={rowData.preferred}
|
||||||
|
onClick={() => addToFavourites(rowData.id, rowData.preferred)}>
|
||||||
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
|
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
|
||||||
</button>
|
</button>
|
||||||
{rowData.confidi
|
{rowData.confidi
|
||||||
|
|||||||
10
src/service/preferred-bando-service.js
Normal file
10
src/service/preferred-bando-service.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { NetworkService } from './network-service';
|
||||||
|
|
||||||
|
const API_BASE_URL = process.env.REACT_APP_API_EXECUTION_ADDRESS;
|
||||||
|
|
||||||
|
export default class PreferredBandoService {
|
||||||
|
|
||||||
|
static addToPreferred = (body, callback, errCallback) => {
|
||||||
|
NetworkService.post(`${API_BASE_URL}/beneficiaryPreferredCall`, body, callback, errCallback);
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user