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); + }; +}