diff --git a/src/pages/DashboardBeneficiario/index.js b/src/pages/DashboardBeneficiario/index.js index d56afcf..660bf36 100644 --- a/src/pages/DashboardBeneficiario/index.js +++ b/src/pages/DashboardBeneficiario/index.js @@ -5,7 +5,7 @@ import { head, isEmpty, pathOr } from 'ramda'; import NumberFlow from '@number-flow/react'; // store -import { storeGet, useStoreValue } from '../../store'; +import { useStoreValue } from '../../store'; // api import DashboardService from '../../service/dashboard-service'; @@ -47,7 +47,6 @@ const DashboardBeneficiario = () => { if (existingCompany) { DashboardService.getBeneficiaryStatsForCompany(existingCompany.id, getStats, errGetStats); - const userData = storeGet('userData'); } }, [companies, chosenCompanyId]); diff --git a/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js index c9e78d2..dbee4e1 100644 --- a/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js +++ b/src/pages/DashboardDirector/components/LatestPecEmailsTable/index.js @@ -1,31 +1,31 @@ -import React, { useState, useEffect} from 'react'; +import React, { useState, useEffect, useCallback, useRef } from 'react'; import { __ } from '@wordpress/i18n'; -import { uniq } from 'ramda'; +import { isEmpty, pluck } from 'ramda'; // api -import BandoService from '../../../../service/bando-service'; +import PecEmailService from '../../../../service/pec-email-service'; // tools -import getTimeParsedFromString from '../../../../helpers/getTimeParsedFromString'; -import getTimeFromISOstring from '../../../../helpers/getTimeFromISOstring'; +import renderHtmlContent from '../../../../helpers/renderHtmlContent'; // components import { FilterMatchMode, FilterOperator } from 'primereact/api'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Button } from 'primereact/button'; -import { Calendar } from 'primereact/calendar'; -import ProperBandoLabel from '../../../../components/ProperBandoLabel'; -import { Link } from 'react-router-dom'; +import { Toast } from 'primereact/toast'; +import { Dialog } from 'primereact/dialog'; import translationStrings from '../../../../translationStringsForComponents'; -import PecEmailService from '../../../../service/pec-email-service'; const LatestPecEmailsTable = () => { const [items, setItems] = useState(null); const [filters, setFilters] = useState(null); + const [selectedProducts, setSelectedProducts] = useState(null); const [localAsyncRequest, setLocalAsyncRequest] = useState(false); - const [, setStatuses] = useState([]); + const [isVisibleDetails, setIsVisibleDetails] = useState(false); + const [previewItem, setPreviewItem] = useState({}); + const toast = useRef(null); useEffect(() => { setLocalAsyncRequest(true); @@ -35,8 +35,6 @@ const LatestPecEmailsTable = () => { const getCallback = (data) => { if (data.status === 'SUCCESS') { setItems(data.data); - /*setStatuses(uniq(data.data.map(o => o.status))); - initFilters();*/ } setLocalAsyncRequest(false); } @@ -45,23 +43,6 @@ const LatestPecEmailsTable = () => { setLocalAsyncRequest(false); } - const getFormattedBandiData = (data) => { - return [...(data || [])].map((d) => { - d.start_date = new Date(d.dates[0]); - d.end_date = new Date(d.dates[1]); - - return d; - }); - }; - - const formatDate = (value) => { - return value.toLocaleDateString('it-IT', { - day: '2-digit', - month: '2-digit', - year: 'numeric' - }); - }; - const clearFilter = () => { initFilters(); }; @@ -69,75 +50,173 @@ const LatestPecEmailsTable = () => { 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 }] } }); }; - const renderHeader = () => { + const doAccept = (ids) => { + if (isEmpty(ids)) { + return; + } + + setLocalAsyncRequest(true); + PecEmailService.doUserAction(getUserActionCallback, errGetUserActionCallbacks, [ + ['userActionIds', ids] + ]); + } + + const getUserActionCallback = (resp) => { + if (resp.status === 'SUCCESS') { + setItems(resp.data); + if (toast.current && resp.message) { + toast.current.show({ + severity: 'success', + summary: '', + detail: resp.message + }); + } + } + setLocalAsyncRequest(false); + } + + const errGetUserActionCallbacks = (resp) => { + setLocalAsyncRequest(false); + if (toast.current && resp.message) { + toast.current.show({ + severity: resp.status === 'SUCCESS' ? 'info' : 'error', + summary: '', + detail: resp.message + }); + } + } + + const doShowDetails = (row) => { + setPreviewItem(row); + setIsVisibleDetails(true); + } + + const headerDialog = () => { + return {__('I dettagli dell\'email', 'gepafin')}; + } + + const hideDialog = () => { + setIsVisibleDetails(false); + setPreviewItem({}); + } + + const footerDialog = useCallback(() => { + return
+
+ }, [previewItem]); + + const renderHeader = useCallback(() => { return (
-
); - }; - - const dateStartBodyTemplate = (rowData) => { - const startTimeObj = getTimeParsedFromString(rowData.startTime); - return formatDate(rowData.start_date) + ' ' + getTimeFromISOstring(startTimeObj); - }; - - const dateEndBodyTemplate = (rowData) => { - const endTimeObg = getTimeParsedFromString(rowData.endTime); - return formatDate(rowData.end_date) + ' ' + getTimeFromISOstring(endTimeObg); - }; - - const dateFilterTemplate = (options) => { - return options.filterCallback(e.value, options.index)} dateFormat="dd/mm/yy" placeholder="dd/mm/yyyy" mask="99/99/9999" />; - }; - - const statusBodyTemplate = (rowData) => { - return ; - }; + }, [selectedProducts]); const actionsBodyTemplate = (rowData) => { - return -