diff --git a/src/assets/scss/components/appPage.scss b/src/assets/scss/components/appPage.scss index dd87777..4a1771b 100644 --- a/src/assets/scss/components/appPage.scss +++ b/src/assets/scss/components/appPage.scss @@ -372,8 +372,8 @@ .appPageSection__tableActions { display: flex; - gap: 24px; - padding: 0; + gap: 10px; + align-items: center; flex-wrap: wrap; &.lessGap { @@ -389,12 +389,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 a4cdef6..e6a155f 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, isEmpty } 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 = () => { @@ -38,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') { @@ -93,21 +96,68 @@ const AllBandiAccordion = () => { return ; }; - /*const addToFavourites = () => { - console.log('addToFavourites'); - }*/ + const addToFavourites = (id, preferredId) => { + const companyId = storeGet.main.chosenCompanyId() + const data = { + companyId, + callId: id + } + if (preferredId && preferredId !== 0) { + PreferredBandoService.deleteFromPreferred(preferredId, (data) => removeFavCallback(data, id), errToggleFavCallback); + } else { + PreferredBandoService.addToPreferred(data, addFavCallback, errToggleFavCallback); + } + } + + 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, + preferredCallId: 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 ( @@ -150,10 +200,12 @@ const AllBandiAccordion = () => { - {/**/} + {!isEmpty(chosenCompanyId) && chosenCompanyId !== 0 + ? : null} ) 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"/> - {/* + +