import { useEffect, useState } from 'react'; import { useParams, useHistory } from 'react-router-dom'; import useForm from '../../../hooks/useForm'; import { EmployeeEditWrapper, Title, RowWrapper, LabelAndInputWrapper, Label, StandardInputField, Dropdown, DropdownOption, SwitchRowWrapper, SwitchTitle, SwitchLabelAndInputWrapper, AccountSwitch, BackAndSaveChangesButtonsWrapper, DeleteButton, BackButton, SaveChangesButton, VisibilityIcon, VisibilityOffIcon, } from './styles'; import IconButton from '@mui/material/IconButton'; import Checkbox from '@mui/material/Checkbox'; import ListItemText from '@mui/material/ListItemText'; import AbsoluteLoader from '../../Loaders/AbsoluteLoader'; import { employeeStatus } from '../../../config/enums'; import useGetData from '../../../hooks/useGetData'; import useUpdateEmployee from '../../../hooks/useUpdateEmployee'; import useDeleteEmployee from '../../../hooks/useDeleteEmployee'; const MenuProps = { PaperProps: { style: { maxHeight: 220, }, }, }; const EmployeeEdit = () => { const [isPasswordVisible, setIsPasswordVisible] = useState(false); let history = useHistory(); let { employeeId } = useParams(); const { updateEmployee } = useUpdateEmployee(); const { deleteEmployee } = useDeleteEmployee(); const { data: employeeData, isLoading: isLoadingEmployeeData } = useGetData( { url: `/vraboten/${employeeId}`, } ); const { data: zoneOptions, isLoading: isLoadingZonesData } = useGetData({ url: `/parkingZone/parkingZoneNames`, }); const { data: employeeEditableData, setNewData: setNewDataEmployee, onFormChange: setEmployeeEditableData, } = useForm(null); const [accStatus, setAccStatus] = useState(false); const { data: { confirmPassword }, onFormChange: setConfirmPassword, } = useForm({ confirmPassword: '' }); const [zones, setZones] = useState([]); const statusOptions = Object.keys(employeeStatus).map((key) => { return { text: employeeStatus[key], value: key, }; }); const onSaveChanges = () => { if (zones.length === 1 && zones[0] === 'NONE') { zones.shift(); } console.log(`Confirm password: ${confirmPassword}`); const mobileNumber = employeeEditableData.mobile; delete employeeEditableData.mobile; const changedEmployee = { ...employeeEditableData, mobileNumber: mobileNumber, locked: accStatus, parkingZones: zones, confirmPass: confirmPassword, }; updateEmployee({ employee: changedEmployee }); }; const onDeleteEmployee = () => { deleteEmployee({ id: employeeData.workerId }); }; const handleZonesChange = (event) => { const { target: { value }, } = event; if (value.length > 1 && value[0] === 'NONE') { value.shift(); } setZones( typeof value === 'string' ? value.split(', ') : value.length === 0 ? ['NONE'] : value ); }; useEffect(() => { if (!employeeData) return; setNewDataEmployee({...employeeData, password: ''}); setAccStatus(employeeData.locked); setZones( employeeData.pzNames.length === 0 ? ['NONE'] : employeeData.pzNames ); }, [employeeData]); return ( Уреди Вработен {isLoadingEmployeeData ? ( ) : ( <> setIsPasswordVisible(!isPasswordVisible) } > {isPasswordVisible ? ( ) : ( )} {isLoadingZonesData ? ( ) : null} { return selected.join(', '); }} MenuProps={MenuProps} > {!isLoadingZonesData && zoneOptions.map((zone) => ( -1 } /> ))} {statusOptions.map((option) => ( {option.text} ))} Акаунт setAccStatus(!accStatus)} /> Избриши Вработен history.push('/employees')} > Врати се Назад Зачувај ги Промените )} ); }; export default EmployeeEdit;