From 41376794ad6d2be84b9061c9a251a4d6c95d4189 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Fri, 27 Mar 2026 17:01:17 +0100 Subject: [PATCH] - updated company file import to evaluation; --- .../components/CompanyDocsTable/index.js | 223 ++++++++++++++++++ .../components/EvaluationExtraFiles/index.js | 4 +- 2 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/components/CompanyDocsTable/index.js diff --git a/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/components/CompanyDocsTable/index.js b/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/components/CompanyDocsTable/index.js new file mode 100644 index 0000000..a708c24 --- /dev/null +++ b/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/components/CompanyDocsTable/index.js @@ -0,0 +1,223 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { __ } from '@wordpress/i18n'; +import { head, is, uniq } from 'ramda'; + +// store +import { useStoreValue } from '../../../../../../store'; + +// tools +import getBandoSeverity from '../../../../../../helpers/getBandoSeverity'; +import getBandoLabel from '../../../../../../helpers/getBandoLabel'; +import getDateFromISOstring from '../../../../../../helpers/getDateFromISOstring'; + +// api +import CompanyDocumentsService from '../../../../../../service/company-documents-service'; +import ApplicationService from '../../../../../../service/application-service'; + +// components +import { FilterMatchMode, FilterOperator } from 'primereact/api'; +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; +import { Dropdown } from 'primereact/dropdown'; +import { Button } from 'primereact/button'; +import { Calendar } from 'primereact/calendar'; +import { Tag } from 'primereact/tag'; +import { Toast } from 'primereact/toast'; +import ProperBandoLabel from '../../../../../../components/ProperBandoLabel'; + +const CompanyDocsTable = ({ type, reload = 0, companyId: companyIdProp, applicationId }) => { + const storedCompanyId = useStoreValue('chosenCompanyId'); + const effectiveCompanyId = companyIdProp || storedCompanyId; + const companies = useStoreValue('companies'); + const [docs, setDocs] = useState([]); + const [filters, setFilters] = useState(null); + const [loading, setLoading] = useState(false); + const [statuses, setStatuses] = useState([]); + const toast = useRef(null); + + useEffect(() => { + const shouldFetch = companyIdProp + ? !!effectiveCompanyId + : !!head(companies.filter(o => o.id === effectiveCompanyId)); + + if (!loading && shouldFetch && reload !== 0) { + setLoading(true); + CompanyDocumentsService.getCompanyDocuments(effectiveCompanyId, getCallback, errGetCallbacks, [ + ['documentType', type] + ]); + } + }, [effectiveCompanyId, reload, companies]); + + useEffect(() => { + const shouldFetch = companyIdProp + ? !!effectiveCompanyId + : !!head(companies.filter(o => o.id === effectiveCompanyId)); + + if (shouldFetch) { + setLoading(true); + CompanyDocumentsService.getCompanyDocuments(effectiveCompanyId, getCallback, errGetCallbacks, [ + ['documentType', type] + ]); + } + }, []); + + const getCallback = (resp) => { + if (resp.status === 'SUCCESS') { + setDocs(getFormattedData(resp.data)); + setStatuses(uniq(resp.data.map(o => o.status))) + initFilters(); + } + setLoading(false); + } + + const errGetCallbacks = () => { + setLoading(false); + } + + const getFormattedData = (data) => { + return data.map((d) => { + d.callEndDate = is(String, d.callEndDate) ? new Date(d.callEndDate) : (d.callEndDate ? d.callEndDate : ''); + return d; + }); + }; + + const clearFilter = () => { + initFilters(); + }; + + const initFilters = () => { + setFilters({ + name: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] + }, + createdDate: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] + }, + expirationDate: { + operator: FilterOperator.AND, + constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] + } + }); + }; + + const renderHeader = () => { + return ( +
+
+ ); + }; + + const dateCreatedBodyTemplate = (rowData) => { + return getDateFromISOstring(rowData.createdDate); + }; + const dateExpirationBodyTemplate = (rowData) => { + return getDateFromISOstring(rowData.expirationDate); + }; + + const dateFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} + dateFormat="dd/mm/yy" placeholder="dd/mm/yyyy" mask="99/99/9999"/>; + }; + + const catBodyTemplate = (rowData) => { + return rowData.category.categoryName; + }; + + const statusBodyTemplate = (rowData) => { + return ; + }; + + const statusFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} + itemTemplate={statusItemTemplate} placeholder={__('Scegli uno', 'gepafin')} + className="p-column-filter"/>; + }; + + const statusItemTemplate = (option) => { + return ; + }; + + const handleImportDoc = (id) => { + setLoading(true); + ApplicationService.setApplicationDocuments(applicationId, importCallback, errImportCallback, [ + ['companyDocumentIds', [id]] + ]); + }; + + const importCallback = (resp) => { + setLoading(false); + if (toast.current) { + toast.current.show({ + severity: resp.status === 'SUCCESS' ? 'success' : 'error', + summary: '', + detail: resp.message + }); + } + }; + + const errImportCallback = (resp) => { + setLoading(false); + if (toast.current && resp.message) { + toast.current.show({ severity: 'error', summary: '', detail: resp.message }); + } + }; + + const actionsBodyTemplate = (rowData) => { + return
+
+ } + + const header = renderHeader(); + + return ( + <> + +
+ setFilters(e.filters)}> + + + + + + + +
+ + ) +} + +export default CompanyDocsTable; diff --git a/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/index.js b/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/index.js index e43d2fe..cc6f15b 100644 --- a/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/index.js +++ b/src/pages/DomandaEditPreInstructor/components/EvaluationExtraFiles/index.js @@ -19,7 +19,7 @@ import { Dropdown } from 'primereact/dropdown'; import { InputText } from 'primereact/inputtext'; import { Calendar } from 'primereact/calendar'; import { FileUpload } from 'primereact/fileupload'; -import DocumentsTable from '../../../DocumentsBeneficiary/components/DocumentsTable'; +import CompanyDocsTable from './components/CompanyDocsTable'; // services import CompanyDocumentsService from '../../../../service/company-documents-service'; @@ -316,7 +316,7 @@ const EvaluationExtraFiles = ({ iconPos="right" onClick={openAddDocDialog}/> - +