From c931750408120b02c95ba180c7af9628f4aae7b9 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Thu, 14 Nov 2024 09:21:23 +0100 Subject: [PATCH] - implemented functionality of adding to preferred and removing from preferred calls; --- .../components/AllBandiAccordion/index.js | 32 +++++++++++---- .../components/LatestBandiTable/index.js | 41 +++++++++++++------ src/service/preferred-bando-service.js | 4 ++ 3 files changed, 56 insertions(+), 21 deletions(-) diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js index c0638b9..4788788 100644 --- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js +++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js @@ -93,27 +93,41 @@ const AllBandiAccordion = () => { return ; }; - const addToFavourites = (id, preferredId = 0) => { + const addToFavourites = (id, preferredId) => { const companyId = storeGet.main.chosenCompanyId() const data = { companyId, callId: id } - if (preferredId !== 0) { - // TODO implement removing from preferrenced - //PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback); + if (preferredId && preferredId !== 0) { + PreferredBandoService.deleteFromPreferred(preferredId, (data) => removeFavCallback(data, id), errToggleFavCallback); } else { - PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback); + PreferredBandoService.addToPreferred(data, addFavCallback, errToggleFavCallback); } } - const toggleFavCallback = (data) => { + const removeFavCallback = (data, id) => { + if (data.status === 'SUCCESS') { + const newItems = items.map((o) => { + if (o.id === id) { + return { + ...o, + preferredCallId: null + } + } else { + return o; + } + }); + setItems(newItems) + } + } + const addFavCallback = (data) => { if (data.status === 'SUCCESS') { const newItems = items.map((o) => { if (o.id === data.data.callId) { return { ...o, - preferred: data.data.id + preferredCallId: data.data.id } } else { return o; @@ -135,8 +149,8 @@ const AllBandiAccordion = () => { return
diff --git a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js index ab791ef..51c8bc8 100644 --- a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js +++ b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js @@ -1,10 +1,10 @@ import React, { useState, useEffect } from 'react'; import { __ } from '@wordpress/i18n'; -import { uniq } from 'ramda'; +import { uniq, isNil } from 'ramda'; import { Link } from 'react-router-dom'; // store -import { storeGet, storeSet } from '../../../../store'; +import { storeGet } from '../../../../store'; // api import BandoService from '../../../../service/bando-service'; @@ -50,28 +50,27 @@ const LatestBandiTable = () => { setLoading(false); } - const addToFavourites = (id, preferredId = 0) => { + const addToFavourites = (id, preferredId) => { 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); + if (preferredId && preferredId !== 0) { + PreferredBandoService.deleteFromPreferred(preferredId, (data) => removeFavCallback(data, id), errToggleFavCallback); } else { - PreferredBandoService.addToPreferred(data, toggleFavCallback, errToggleFavCallback); + PreferredBandoService.addToPreferred(data, addFavCallback, errToggleFavCallback); } } - const toggleFavCallback = (data) => { + const removeFavCallback = (data, id) => { if (data.status === 'SUCCESS') { const newItems = items.map((o) => { - if (o.id === data.data.callId) { + if (o.id === id) { return { ...o, - preferred: data.data.id + preferredCallId: null } } else { return o; @@ -79,10 +78,28 @@ const LatestBandiTable = () => { }); setItems(newItems) } + setLoading(false); + } + const addFavCallback = (data) => { + if (data.status === 'SUCCESS') { + const newItems = items.map((o) => { + if (o.id === data.data.callId) { + return { + ...o, + preferredCallId: data.data.id + } + } else { + return o; + } + }); + setItems(newItems) + } + setLoading(false); } const errToggleFavCallback = (data) => { set404FromErrorResponse(data); + setLoading(false); } const getFormattedData = (data) => { @@ -171,8 +188,8 @@ const LatestBandiTable = () => { return
{rowData.confidi diff --git a/src/service/preferred-bando-service.js b/src/service/preferred-bando-service.js index 1738e85..95416af 100644 --- a/src/service/preferred-bando-service.js +++ b/src/service/preferred-bando-service.js @@ -7,4 +7,8 @@ export default class PreferredBandoService { static addToPreferred = (body, callback, errCallback) => { NetworkService.post(`${API_BASE_URL}/beneficiaryPreferredCall`, body, callback, errCallback); }; + + static deleteFromPreferred = (id, callback, errCallback) => { + NetworkService.delete(`${API_BASE_URL}/beneficiaryPreferredCall/${id}`, {}, callback, errCallback); + }; }