From 645b6742766e581bfd74f64e6c860cc2f33eb943 Mon Sep 17 00:00:00 2001
From: Vitalii Kiiko
Date: Thu, 2 Jan 2025 16:58:40 +0100
Subject: [PATCH] - added role switcher; - added vatCheckData to add company
request;
---
src/pages/AddCompany/index.js | 13 +-
src/pages/SoccorsoEditBeneficiario/index.js | 2 +-
.../components/AllUsersTable/index.js | 175 ------------------
src/pages/UserActivity/index.js | 68 +++++--
4 files changed, 64 insertions(+), 194 deletions(-)
delete mode 100644 src/pages/UserActivity/components/AllUsersTable/index.js
diff --git a/src/pages/AddCompany/index.js b/src/pages/AddCompany/index.js
index 9a80617..7856987 100644
--- a/src/pages/AddCompany/index.js
+++ b/src/pages/AddCompany/index.js
@@ -1,4 +1,4 @@
-import React, { useEffect, useRef } from 'react';
+import React, { useEffect, useRef, useState } from 'react';
import { __ } from '@wordpress/i18n';
import { isEmpty, head } from 'ramda';
import { klona } from 'klona';
@@ -29,6 +29,7 @@ const AddCompany = () => {
const isAsyncRequest = useStore().main.isAsyncRequest();
const infoMsgs = useRef(null);
const [, debouncedPivaValue, setInputPiva] = useDebounce('', 1000);
+ const [vatCheckResponse, setVatCheckResponse] = useState({});
const {
control,
@@ -54,14 +55,19 @@ const AddCompany = () => {
address: '',
companyName: ''
}
+ setVatCheckResponse({});
Object.keys(formData).map(k => setValue(k, formData[k]));
}
const onSubmit = (formData) => {
infoMsgs.current.clear();
storeSet.main.setAsyncRequest();
+ const submitData = {
+ ...formData,
+ vatCheckResponse
+ }
- CompanyService.createCompany(formData, updateCallback, updateError);
+ CompanyService.createCompany(submitData, updateCallback, updateError);
};
const updateCallback = (data) => {
@@ -109,7 +115,7 @@ const AddCompany = () => {
const checkVatCallback = (data) => {
if (data.status === 'SUCCESS') {
- const resp = data.data.data;
+ const resp = data.data.vatCheckResponse.data;
if (!isEmpty(resp)) {
const {
cap, cf, denominazione, piva, indirizzo, comune, dettaglio: { pec }
@@ -126,6 +132,7 @@ const AddCompany = () => {
companyName: denominazione
}
Object.keys(formData).map(k => setValue(k, formData[k]));
+ setVatCheckResponse(data.data.vatCheckResponse);
}
//setData(getFormattedBandiData(data.data));
} else {
diff --git a/src/pages/SoccorsoEditBeneficiario/index.js b/src/pages/SoccorsoEditBeneficiario/index.js
index df40a50..4862266 100644
--- a/src/pages/SoccorsoEditBeneficiario/index.js
+++ b/src/pages/SoccorsoEditBeneficiario/index.js
@@ -437,7 +437,7 @@ const SoccorsoEditBeneficiario = () => {
outlined
onClick={goToArchivePage}
label={__('Indietro', 'gepafin')}
- icon="pi pi-times" iconPos="right"/>
+ icon="pi pi-arrow-left" iconPos="left"/>
diff --git a/src/pages/UserActivity/components/AllUsersTable/index.js b/src/pages/UserActivity/components/AllUsersTable/index.js
deleted file mode 100644
index ae45a51..0000000
--- a/src/pages/UserActivity/components/AllUsersTable/index.js
+++ /dev/null
@@ -1,175 +0,0 @@
-import React, { useState, useEffect } from 'react';
-import { __ } from '@wordpress/i18n';
-import { uniq } from 'ramda';
-import copy from 'copy-to-clipboard';
-
-// store
-import { useStore, storeSet } from '../../../../store';
-
-// tools
-import getBandoSeverity from '../../../../helpers/getBandoSeverity';
-import getBandoLabel from '../../../../helpers/getBandoLabel';
-import getDateFromISOstring from '../../../../helpers/getDateFromISOstring';
-
-// api
-import UserService from '../../../../service/user-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 ProperBandoLabel from '../../../../components/ProperBandoLabel';
-import translationStrings from '../../../../translationStringsForComponents';
-import { Link } from 'react-router-dom';
-
-const AllUsersTable = () => {
- const users = useStore().main.users();
- const [filters, setFilters] = useState(null);
- const [loading, setLoading] = useState(false);
- const [statuses, setStatuses] = useState([]);
-
- useEffect(() => {
- if (!loading) {
- setLoading(true);
- UserService.getUsers(getCallback, errGetCallbacks);
- }
- }, []);
-
- const getCallback = (data) => {
- if (data.status === 'SUCCESS') {
- storeSet.main.users(getFormattedData(data.data));
- setStatuses(uniq(data.data.map(o => o.status)))
- initFilters();
- }
- setLoading(false);
- }
-
- const errGetCallbacks = () => {
- setLoading(false);
- }
-
- const getFormattedData = (data) => {
- return data
- .filter(o => ['ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER'].includes(o.role.roleType));
- };
-
- const clearFilter = () => {
- initFilters();
- };
-
- const initFilters = () => {
- setFilters({
- global: { value: null, matchMode: FilterMatchMode.CONTAINS },
- email: {
- operator: FilterOperator.AND,
- constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }]
- },
- lastLogin: {
- operator: FilterOperator.AND,
- constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }]
- }
- });
- };
-
- const renderHeader = () => {
- return (
-
-
- );
- };
-
- const dateLastAccessBodyTemplate = (rowData) => {
- return getDateFromISOstring(rowData.lastLogin);
- };
-
- const dateFilterTemplate = (options) => {
- return options.filterCallback(e.value, options.index)}
- dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999"/>;
- };
-
- const nameBodyTemplate = (rowData) => {
- return `${rowData.firstName} ${rowData.lastName}`;
- };
-
- const roleEmailTemplate = (rowData) => {
- return
- {rowData.email}
-
-
;
- };
-
- const roleBodyTemplate = (rowData) => {
- return rowData.role.roleName;
- };
-
- const statusBodyTemplate = (rowData) => {
- return ;
- };
-
- const statusFilterTemplate = (options) => {
- return options.filterCallback(e.value, options.index)}
- itemTemplate={statusItemTemplate} placeholder={__('Scegli uno', 'gepafin')}
- className="p-column-filter"
- showClear/>;
- };
-
- const statusItemTemplate = (option) => {
- return ;
- };
-
- const actionsBodyTemplate = (rowData) => {
- return
-
-
- }
-
- const header = renderHeader();
-
- return (
-
- setFilters(e.filters)}>
-
-
-
-
-
-
-
-
- )
-}
-
-export default AllUsersTable;
diff --git a/src/pages/UserActivity/index.js b/src/pages/UserActivity/index.js
index c0b1921..ef764ea 100644
--- a/src/pages/UserActivity/index.js
+++ b/src/pages/UserActivity/index.js
@@ -1,30 +1,21 @@
import React, { useState, useEffect, useRef } from 'react';
import { __ } from '@wordpress/i18n';
-import { isEmpty, isNil, pathOr } from 'ramda';
-import { klona } from 'klona';
-
-// store
-import { storeSet, storeGet } from '../../store';
+import { isEmpty, pathOr } from 'ramda';
+import { useNavigate, useParams } from 'react-router-dom';
+import NumberFlow from '@number-flow/react';
// service
import UserService from '../../service/user-service';
// tools
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
-import { isEmail } from '../../helpers/validators';
+import getDateFromISOstring from '../../helpers/getDateFromISOstring';
// components
-import AllUsersTable from './components/AllUsersTable';
import { Button } from 'primereact/button';
-import { InputText } from 'primereact/inputtext';
-import { Dropdown } from 'primereact/dropdown';
-import { Dialog } from 'primereact/dialog';
-import { classNames } from 'primereact/utils';
import { Toast } from 'primereact/toast';
-import getDateFromISOstring from '../../helpers/getDateFromISOstring';
-import getBandoLabel from '../../helpers/getBandoLabel';
-import { useNavigate, useParams } from 'react-router-dom';
-import NumberFlow from '@number-flow/react';
+import { Dropdown } from 'primereact/dropdown';
+
const UserActivity = () => {
const [loading, setLoading] = useState(false);
@@ -33,6 +24,7 @@ const UserActivity = () => {
const { id } = useParams();
const [user, setUser] = useState({});
const [roles, setRoles] = useState([]);
+ const [chosenRole, setChosenRole] = useState(0);
const goBack = () => {
navigate(`/utenti`);
@@ -41,6 +33,7 @@ const UserActivity = () => {
const getUserCallback = (resp) => {
if (resp.status === 'SUCCESS') {
setUser(resp.data)
+ setChosenRole(resp.data.role?.id);
}
setLoading(false);
}
@@ -66,6 +59,25 @@ const UserActivity = () => {
return pathOr(fallback, [key], {});
}
+ const handleRoleUpdate = () => {
+ if (user.role?.id !== chosenRole) {
+ setLoading(true);
+ UserService.updateUser(user.id, {roleId: chosenRole}, updateRoleCallback, errUpdateRoleCallback)
+ }
+ }
+
+ const updateRoleCallback = (resp) => {
+ if (resp.status === 'SUCCESS') {
+ setUser(resp.data)
+ }
+ setLoading(false);
+ }
+
+ const errUpdateRoleCallback = (resp) => {
+ set404FromErrorResponse(resp);
+ setLoading(false);
+ }
+
useEffect(() => {
if (id && !isEmpty(id)) {
setLoading(true);
@@ -119,6 +131,32 @@ const UserActivity = () => {
+ {['ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER'].includes(user.role?.roleType)
+ ? <>
+
+
+
+
{__('Cambia ruolo', 'gepafin')}
+
+ setChosenRole(e.value)}
+ options={roles.filter(o => [3, 5].includes(o.id)).map(o => ({ label: o.roleName, value: o.id }))}
+ optionLabel="label"
+ placeholder={__('Seleziona ruolo', 'gepafin')}/>
+
+
+
+ > : null}
+