import React, { useState, useEffect, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { isEmpty, isNil } from 'ramda'; import { klona } from 'klona'; // store import { storeSet } from '../../store'; // service import UserService from '../../service/user-service'; // tools import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; import { isEmail } from '../../helpers/validators'; // 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'; const APP_HUB_ID = process.env.REACT_APP_HUB_ID; const Users = () => { const [loading, setLoading] = useState(false); const [isVisibleEditDialog, setIsVisibleEditDialog] = useState(false); const [newUserData, setNewUserData] = useState({ firstName: '', lastName: '', email: '', phoneNumber: '', password: '', confPassword: '', roleId: 0 }); const [roles, setRoles] = useState([]); const toast = useRef(null); const onCreateNewUser = () => { setIsVisibleEditDialog(true); } const headerEditDialog = () => { return {__('Aggiungi utente', 'gepafin')} } const hideEditDialog = () => { setIsVisibleEditDialog(false); setNewUserData({ firstName: '', lastName: '', email: '', phoneNumber: '', password: '', confPassword: '', roleId: 0 }); } const saveEditDialog = () => { const emptyValues = Object.values(newUserData).filter(v => isEmpty(v)); if (isEmpty(emptyValues) && newUserData.password === newUserData.confPassword && !loading) { setLoading(true); const body = { ...newUserData, hubUuid: APP_HUB_ID } UserService.createUser(body, createUserCallback, errCreateUserCallback); } } const createUserCallback = (data) => { if (data.status === 'SUCCESS') { } setLoading(false); } const errCreateUserCallback = (data) => { setLoading(false); if (toast.current) { toast.current.show({ severity: 'error', summary: '', detail: data.message }); } set404FromErrorResponse(data); } const onChangeEditItem = (value, key) => { const userData = klona(newUserData); userData[key] = value; setNewUserData(userData); } const footerEditDialog = () => { return
} const getRolesCallback = (data) => { if (data.status === 'SUCCESS') { const roles = data.data .filter(o => ['ROLE_SUPER_ADMIN', 'ROLE_PRE_INSTRUCTOR'].includes(o.roleType)) .map(o => ({ name: o.roleName, value: o.id })); setRoles(roles) } storeSet.main.unsetAsyncRequest(); } const errGetRolesCallback = (data) => { set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } const isInvalidField = (data, key) => isEmpty(data[key]) || isNil(data[key]) useEffect(() => { if (isVisibleEditDialog) { UserService.getRoles(getRolesCallback, errGetRolesCallback) } }, [isVisibleEditDialog]); return (

{__('Gestione utenti', 'gepafin')}

onChangeEditItem(e.target.value, 'firstName')}/>
onChangeEditItem(e.target.value, 'lastName')}/>
onChangeEditItem(e.target.value, 'email')}/>
onChangeEditItem(e.target.value, 'phoneNumber')}/>
onChangeEditItem(e.target.value, 'password')}/>
onChangeEditItem(e.target.value, 'confPassword')}/>
onChangeEditItem(e.value, 'roleId')} options={roles} optionLabel="name" optionValue="value"/>
) } export default Users;