import { useState, useEffect, useMemo } from 'react'; import { Box, Button, TextField, MenuItem } from '@mui/material'; import UserApi from '../../api/userApi'; import { useAuth } from '../../context/AuthContext'; export default function AddOrEditUserForm({ onAdd, initialData, onCancel }) { const { user } = useAuth(); const thalosToken = user?.thalosToken || localStorage.getItem('thalosToken'); const api = useMemo(() => (thalosToken ? new UserApi(thalosToken) : null), [thalosToken]); const [formData, setFormData] = useState({ _Id: '', email: '', name: '', middleName: '', lastName: '', tenantId: '', roleId: '', status: 'Active', sendInvitation: true, }); useEffect(() => { if (initialData) { setFormData({ _Id: initialData._id || initialData._Id || '', email: initialData.email ?? '', name: initialData.name ?? '', middleName: initialData.middleName ?? '', lastName: initialData.lastName ?? '', tenantId: initialData.tenantId ?? '', roleId: initialData.roleId ?? '', status: initialData.status ?? 'Active', sendInvitation: true, }); } else { setFormData({ _Id: '', email: '', name: '', middleName: '', lastName: '', tenantId: '6894f9ddfb7072bdfc881613', roleId: '68407642ec46a0e6fe1e8ec9', status: 'Active', sendInvitation: true, }); } }, [initialData]); const handleChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async () => { try { if (!api) throw new Error('Missing Thalos token'); if (initialData) { // UPDATE (PUT /User/Update) — API requires _Id, remove Id, displayName, tenantId const payload = { _Id: formData._Id, email: formData.email, name: formData.name, middleName: formData.middleName, lastName: formData.lastName, tenantId: formData.tenantId, roleId: formData.roleId, status: formData.status || 'Active', }; await api.updateUser(payload); } else { // CREATE (POST /User/Create) const payload = { email: formData.email, name: formData.name, middleName: formData.middleName, lastName: formData.lastName, roleId: formData.roleId, tenantId: formData.tenantId, sendInvitation: !!formData.sendInvitation, }; await api.createUser(payload); } onAdd?.(); } catch (error) { console.error('Error submitting form:', error); } }; return ( Active Inactive ); }