From a42806c0f0334e07efefc783663e64cab71646cc Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Mon, 11 Nov 2024 14:16:33 +0100 Subject: [PATCH 1/4] - added btn 'add to favourites; --- src/assets/scss/components/appPage.scss | 14 +++-- .../components/AllBandiAccordion/index.js | 9 ++- .../components/LatestBandiTable/index.js | 63 ++++++++++++------- 3 files changed, 58 insertions(+), 28 deletions(-) diff --git a/src/assets/scss/components/appPage.scss b/src/assets/scss/components/appPage.scss index 3c62a17..4fdac21 100644 --- a/src/assets/scss/components/appPage.scss +++ b/src/assets/scss/components/appPage.scss @@ -355,8 +355,8 @@ .appPageSection__tableActions { display: flex; - gap: 24px; - padding: 0; + gap: 10px; + align-items: center; flex-wrap: wrap; } @@ -368,12 +368,18 @@ justify-content: center; border-radius: 50%; border: none; - background-color: var(--message-info-color); - color: white; + background-color: transparent; + color: var(--global-textColor); padding: 0; &:hover { cursor: pointer; + color: var(--message-info-color); + } + + &[data-active="true"] { + background-color: var(--message-info-color); + color: white; } &[disabled] { diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js index 0fc5fe1..183e894 100644 --- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js +++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js @@ -102,7 +102,9 @@ const AllBandiAccordion = () => { const actionsBodyTemplate = (rowData) => { return
-
@@ -151,8 +153,9 @@ const AllBandiAccordion = () => { - {/**/} + ) diff --git a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js index 301094f..9ae2864 100644 --- a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js +++ b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js @@ -55,6 +55,10 @@ const LatestBandiTable = () => { storeSet.main.unsetAsyncRequest(); } + const addToFavourites = (id) => { + + } + const getFormattedData = (data) => { return [...(data || [])].map((d) => { d.start_date = new Date(d.dates[0]); @@ -89,9 +93,18 @@ const LatestBandiTable = () => { const initFilters = () => { setFilters({ global: { value: null, matchMode: FilterMatchMode.CONTAINS }, - name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, - start_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, - end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, + name: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] + }, + start_date: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] + }, + end_date: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] + }, status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] } }); setGlobalFilterValue(''); @@ -100,10 +113,12 @@ const LatestBandiTable = () => { const renderHeader = () => { return (
-
); @@ -118,26 +133,31 @@ const LatestBandiTable = () => { }; const dateFilterTemplate = (options) => { - return options.filterCallback(e.value, options.index)} dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999" />; + return options.filterCallback(e.value, options.index)} + dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999"/>; }; const statusBodyTemplate = (rowData) => { return ; }; - const statusItemTemplate = (option) => { - return ; - }; - const actionsBodyTemplate = (rowData) => { - return rowData.confidi - ? - + {rowData.confidi + ? + - }*/ + } 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); + }; +} From c931750408120b02c95ba180c7af9628f4aae7b9 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Thu, 14 Nov 2024 09:21:23 +0100 Subject: [PATCH 3/4] - 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); + }; } From 291f76984034d07297ffe92476c1305ec36bb6a3 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Mon, 18 Nov 2024 16:44:28 +0100 Subject: [PATCH 4/4] - implemnted functionality adding to preferred calls; --- .../components/AllBandiAccordion/index.js | 6 +- src/pages/BandoViewBeneficiario/index.js | 57 ++++++++++++++++--- .../components/LatestBandiTable/index.js | 6 +- src/service/bando-service.js | 8 +-- 4 files changed, 61 insertions(+), 16 deletions(-) diff --git a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js index 615f0f1..e6a155f 100644 --- a/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js +++ b/src/pages/BandiBeneficiario/components/AllBandiAccordion/index.js @@ -39,8 +39,10 @@ const AllBandiAccordion = () => { useEffect(() => { storeSet.main.setAsyncRequest(); - BandoService.getBandi(getCallback, errGetCallbacks); - }, []); + BandoService.getBandi(getCallback, errGetCallbacks, [ + ['companyId', chosenCompanyId] + ]); + }, [chosenCompanyId]); const getCallback = (data) => { if (data.status === 'SUCCESS') { diff --git a/src/pages/BandoViewBeneficiario/index.js b/src/pages/BandoViewBeneficiario/index.js index 3496c13..bcb7bc0 100644 --- a/src/pages/BandoViewBeneficiario/index.js +++ b/src/pages/BandoViewBeneficiario/index.js @@ -5,7 +5,7 @@ import { is, isEmpty, isNil } from 'ramda'; import "quill/dist/quill.core.css"; // store -import { storeSet, useStore } from '../../store'; +import { storeGet, storeSet, useStore } from '../../store'; // tools import getNumberWithCurrency from '../../helpers/getNumberWithCurrency'; @@ -28,6 +28,7 @@ import { Message } from 'primereact/message'; import { Toast } from 'primereact/toast'; import { Editor } from 'primereact/editor'; import { Dialog } from 'primereact/dialog'; +import PreferredBandoService from '../../service/preferred-bando-service'; const BandoViewBeneficiario = () => { const isAsyncRequest = useStore().main.isAsyncRequest(); @@ -246,11 +247,50 @@ const BandoViewBeneficiario = () => { const header = renderHeader(); + const addToFavourites = () => { + const companyId = storeGet.main.chosenCompanyId(); + const bandoId = getBandoId(); + const formdData = { + companyId, + callId: bandoId + } + + if (data.preferredCallId && data.preferredCallId !== 0) { + PreferredBandoService.deleteFromPreferred(data.preferredCallId, removeFavCallback, errToggleFavCallback); + } else { + PreferredBandoService.addToPreferred(formdData, addFavCallback, errToggleFavCallback); + } + } + + const removeFavCallback = (resp) => { + if (resp.status === 'SUCCESS') { + const newData = { + ...data, + preferredCallId: null + } + setData(newData); + } + } + const addFavCallback = (resp) => { + if (resp.status === 'SUCCESS') { + const newData = { + ...data, + preferredCallId: resp.data.id + } + setData(newData); + } + } + const errToggleFavCallback = (data) => { + set404FromErrorResponse(data); + } + useEffect(() => { if (!isEmpty(chosenCompanyId) && chosenCompanyId !== 0) { const bandoId = getBandoId(); storeSet.main.setAsyncRequest(); - BandoService.getBando(bandoId, getBandoCallback, errGetBandoCallback); + BandoService.getBando(bandoId, getBandoCallback, errGetBandoCallback, [ + ['companyId', chosenCompanyId] + ]); ApplicationService.getApplications(getApplCallback, errGetApplCallback, [ ['callId', bandoId], ['companyId', chosenCompanyId] @@ -445,14 +485,15 @@ const BandoViewBeneficiario = () => { onClick={submitApplication} label={submitBtnLabel()} icon={submitBtnIcon()} iconPos="right"/> - {/*
diff --git a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js index b6cb22c..0de8d69 100644 --- a/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js +++ b/src/pages/DashboardBeneficiario/components/LatestBandiTable/index.js @@ -33,8 +33,10 @@ const LatestBandiTable = () => { useEffect(() => { setLoading(true); - BandoService.getBandi(getCallback, errGetCallbacks); - }, []); + BandoService.getBandi(getCallback, errGetCallbacks, [ + ['companyId', chosenCompanyId] + ]); + }, [chosenCompanyId]); const getCallback = (data) => { if (data.status === 'SUCCESS') { diff --git a/src/service/bando-service.js b/src/service/bando-service.js index 60b70b1..dfda3f4 100644 --- a/src/service/bando-service.js +++ b/src/service/bando-service.js @@ -4,12 +4,12 @@ const API_BASE_URL = process.env.REACT_APP_API_EXECUTION_ADDRESS; export default class BandoService { - static getBandi = (callback, errCallback) => { - NetworkService.get(`${API_BASE_URL}/call`, callback, errCallback); + static getBandi = (callback, errCallback, queryParams) => { + NetworkService.get(`${API_BASE_URL}/call`, callback, errCallback, queryParams); }; - static getBando = (id, callback, errCallback) => { - NetworkService.get(`${API_BASE_URL}/call/${id}`, callback, errCallback); + static getBando = (id, callback, errCallback, queryParams) => { + NetworkService.get(`${API_BASE_URL}/call/${id}`, callback, errCallback, queryParams); }; static validateBando = (id, callback, errCallback) => {