diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js
index 4dc41eb..c0638b9 100644
--- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js
+++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js
@@ -2,14 +2,18 @@ import React, { useState, useEffect} from 'react';
import { __ } from '@wordpress/i18n';
import { is, uniq, isNil } from 'ramda';
import { wrap } from 'object-path-immutable';
+import { useNavigate } from 'react-router-dom';
// store
-import { storeSet, useStore } from '../../../../store';
+import { storeGet, storeSet, useStore } from '../../../../store';
// tools
import getBandoSeverity from '../../../../helpers/getBandoSeverity';
import getBandoLabel from '../../../../helpers/getBandoLabel';
import getDateFromISOstring from '../../../../helpers/getDateFromISOstring';
+import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
+import getNumberWithCurrency from '../../../../helpers/getNumberWithCurrency';
+import renderHtmlContent from '../../../../helpers/renderHtmlContent';
// api
import BandoService from '../../../../service/bando-service';
@@ -20,11 +24,8 @@ import { Column } from 'primereact/column';
import { Dropdown } from 'primereact/dropdown';
import { Tag } from 'primereact/tag';
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
-import getNumberWithCurrency from '../../../../helpers/getNumberWithCurrency';
-import renderHtmlContent from '../../../../helpers/renderHtmlContent';
import { Button } from 'primereact/button';
-import { useNavigate } from 'react-router-dom';
-import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
+import PreferredBandoService from '../../../../service/preferred-bando-service';
const AllBandiAccordion = () => {
@@ -92,23 +93,54 @@ const AllBandiAccordion = () => {
return ;
};
- /*const addToFavourites = () => {
- console.log('addToFavourites');
- }*/
+ const addToFavourites = (id, preferredId = 0) => {
+ 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) => {
navigate(`/bandi/${id}`)
}
- /*const actionsBodyTemplate = (rowData) => {
+ const actionsBodyTemplate = (rowData) => {
return
- }*/
+ }
const rowExpansionTemplate = (data) => {
return (
@@ -151,10 +183,10 @@ const AllBandiAccordion = () => {
diff --git a/src/pages/BandiBeneficiario/index.js b/src/pages/BandiBeneficiario/index.js
index 66942d3..8165092 100644
--- a/src/pages/BandiBeneficiario/index.js
+++ b/src/pages/BandiBeneficiario/index.js
@@ -1,10 +1,8 @@
import React from 'react';
import { __ } from '@wordpress/i18n';
-import { useNavigate } from 'react-router-dom';
// components
import AllBandiAccordion from './components/AllBandiAccordion';
-import { Button } from 'primereact/button';
const BandiBeneficiario = () => {
return(
diff --git a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js
index ba04ffb..ab791ef 100644
--- a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js
+++ b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js
@@ -4,7 +4,7 @@ import { uniq } from 'ramda';
import { Link } from 'react-router-dom';
// store
-import { storeSet } from '../../../../store';
+import { storeGet, storeSet } from '../../../../store';
// api
import BandoService from '../../../../service/bando-service';
@@ -19,6 +19,8 @@ import { InputIcon } from 'primereact/inputicon';
import { Button } from 'primereact/button';
import { Calendar } from 'primereact/calendar';
import ProperBandoLabel from '../../../../components/ProperBandoLabel';
+import PreferredBandoService from '../../../../service/preferred-bando-service';
+import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse';
const LatestBandiTable = () => {
@@ -29,7 +31,7 @@ const LatestBandiTable = () => {
const [statuses, setStatuses] = useState([]);
useEffect(() => {
- storeSet.main.setAsyncRequest();
+ setLoading(true);
BandoService.getBandi(getCallback, errGetCallbacks);
}, []);
@@ -40,16 +42,47 @@ const LatestBandiTable = () => {
setStatuses(uniq(data.data.map(o => o.status)))
initFilters();
}
- storeSet.main.unsetAsyncRequest();
+ setLoading(false);
}
const errGetCallbacks = (data) => {
- console.log('errGetCallbacks', data)
- storeSet.main.unsetAsyncRequest();
+ set404FromErrorResponse(data);
+ 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) => {
@@ -138,7 +171,8 @@ const LatestBandiTable = () => {
return
{rowData.confidi
diff --git a/src/service/preferred-bando-service.js b/src/service/preferred-bando-service.js
new file mode 100644
index 0000000..1738e85
--- /dev/null
+++ b/src/service/preferred-bando-service.js
@@ -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);
+ };
+}