- added pages for CONFIDI user;
This commit is contained in:
@@ -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 = () => {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user