- added pages for CONFIDI user;

This commit is contained in:
Vitalii Kiiko
2025-03-06 15:20:42 +01:00
parent 00b4ad8569
commit a9a92baf18
11 changed files with 443 additions and 43 deletions

View File

@@ -54,7 +54,9 @@ const AllUsersTable = () => {
const getFormattedData = (data) => {
return data
.filter(o => ['ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER'].includes(o.role.roleType));
.filter(o => [
'ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER', 'ROLE_CONFIDI'
].includes(o.role.roleType));
};
const clearFilter = () => {

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect, useRef } from 'react';
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { __ } from '@wordpress/i18n';
import { isEmpty, isNil } from 'ramda';
import { head, isEmpty, isNil } from 'ramda';
import { klona } from 'klona';
// store
@@ -11,7 +11,7 @@ import UserService from '../../service/user-service';
// tools
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
import { isEmail } from '../../helpers/validators';
import { isCodiceFiscale, isEmail, isPIVA } from '../../helpers/validators';
// components
import AllUsersTable from './components/AllUsersTable';
@@ -34,7 +34,8 @@ const Users = () => {
phoneNumber: '',
password: '',
confPassword: '',
roleId: 0
roleId: 0,
codiceFiscale: ''
});
const [roles, setRoles] = useState([]);
const toast = useRef(null);
@@ -56,18 +57,27 @@ const Users = () => {
phoneNumber: '',
password: '',
confPassword: '',
roleId: 0
roleId: 0,
codiceFiscale: ''
});
}
const saveEditDialog = () => {
const emptyValues = Object.values(newUserData).filter(v => isEmpty(v));
const isConfidi = isConfidiRoleChosen();
const emptyValues = Object.keys(newUserData)
.filter(v => v !== 'phoneNumber')
.filter(v => isConfidi ? v : v !== 'codiceFiscale')
.filter(v => isInvalidField(newUserData, v));
if (isEmpty(emptyValues) && newUserData.password === newUserData.confPassword && !loading) {
setLoading(true);
const body = {
let body = klona({
...newUserData,
hubUuid: APP_HUB_ID
});
if (!isConfidi) {
delete body.codiceFiscale;
}
UserService.createUser(body, createUserCallback, errCreateUserCallback);
@@ -108,23 +118,33 @@ const Users = () => {
setNewUserData(userData);
}
const footerEditDialog = () => {
const footerEditDialog = useCallback(() => {
const isConfidi = isConfidiRoleChosen();
const errorValues = Object.keys(newUserData)
.filter(v => v !== 'phoneNumber')
.filter(v => isConfidi ? v : v !== 'codiceFiscale')
.filter(v => isInvalidField(newUserData, v));
return <div>
<Button type="button" label={__('Anulla', 'gepafin')} onClick={hideEditDialog} outlined/>
<Button
type="button"
disabled={isEmpty(newUserData) || loading}
disabled={!isEmpty(errorValues) || loading}
label={__('Salva', 'gepafin')} onClick={saveEditDialog}/>
</div>
}
}, [newUserData]);
const getRolesCallback = (data) => {
if (data.status === 'SUCCESS') {
const roles = data.data
.filter(o => ['ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER'].includes(o.roleType))
.filter(o => [
'ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR', 'ROLE_INSTRUCTOR_MANAGER', 'ROLE_CONFIDI'
].includes(o.roleType))
.map(o => ({
name: o.roleName,
value: o.id
value: o.id,
id: o.id,
roleType: o.roleType
}));
setRoles(roles);
}
@@ -136,7 +156,14 @@ const Users = () => {
storeSet.main.unsetAsyncRequest();
}
const isInvalidField = (data, key) => isEmpty(data[key]) || isNil(data[key])
const isInvalidField = (data, key) => key === 'codiceFiscale'
? !isCodiceFiscale(data[key]) && !isPIVA(data[key])
: isEmpty(data[key]) || isNil(data[key]);
const isConfidiRoleChosen = useCallback(() => {
const chosen = head(roles.filter(o => o.id === newUserData.roleId));
return chosen ? chosen.roleType === 'ROLE_CONFIDI' : false;
}, [roles, newUserData])
useEffect(() => {
if (isVisibleEditDialog) {
@@ -151,7 +178,7 @@ const Users = () => {
</div>
<div className="appPage__spacer"></div>
<Toast ref={toast} />
<Toast ref={toast}/>
<div className="appPageSection">
<div className="appPageSection__actions">
@@ -201,13 +228,11 @@ const Users = () => {
onChange={(e) => onChangeEditItem(e.target.value, 'email')}/>
</div>
<div className="appForm__field">
<label
className={classNames({ 'p-error': isInvalidField(newUserData, 'phoneNumber') })}>
<label>
{__('Telefono', 'gepafin')}
</label>
<InputText value={newUserData.phoneNumber}
keyfilter="int"
invalid={isInvalidField(newUserData, 'phoneNumber')}
onChange={(e) => onChangeEditItem(e.target.value, 'phoneNumber')}/>
</div>
</div>
@@ -244,6 +269,16 @@ const Users = () => {
optionLabel="name"
optionValue="value"/>
</div>
{isConfidiRoleChosen()
? <div className="appForm__field">
<label
className={classNames({ 'p-error': isInvalidField(newUserData, 'codiceFiscale') })}>
{__('Codice Fiscale', 'gepafin')}*
</label>
<InputText value={newUserData.codiceFiscale}
invalid={isInvalidField(newUserData, 'codiceFiscale')}
onChange={(e) => onChangeEditItem(e.target.value, 'codiceFiscale')}/>
</div> : null}
<div className="appPage__spacer"></div>
</Dialog>
</div>