- implemented functionality of adding to preferred and removing from preferred calls;

This commit is contained in:
Vitalii Kiiko
2024-11-14 09:21:23 +01:00
parent 76b283ee8e
commit c931750408
3 changed files with 56 additions and 21 deletions

View File

@@ -93,27 +93,41 @@ const AllBandiAccordion = () => {
return <Tag value={getBandoLabel(option)} severity={getBandoSeverity(option)} />;
};
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 <div className="appPageSection__tableActions">
<button type="button"
className="appPageSection__addToFavourites"
data-active={rowData.preferred}
onClick={() => addToFavourites(rowData.id, rowData.preferred)}>
data-active={!isNil(rowData.preferredCallId)}
onClick={() => addToFavourites(rowData.id, rowData.preferredCallId)}>
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
</button>
</div>

View File

@@ -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 <div className="appPageSection__tableActions">
<button type="button"
className="appPageSection__addToFavourites"
data-active={rowData.preferred}
onClick={() => addToFavourites(rowData.id, rowData.preferred)}>
data-active={!isNil(rowData.preferredCallId)}
onClick={() => addToFavourites(rowData.id, rowData.preferredCallId)}>
<i className="pi pi-heart" style={{ fontSize: '1rem' }}></i>
</button>
{rowData.confidi

View File

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