import React, { useEffect, useState } from "react"; import { Dialog, DialogTitle, DialogContent, DialogActions, TextField, Button, MenuItem, InputAdornment, IconButton, } from "@mui/material"; import { Person, Email, LocationOn, Phone, AssignmentInd, Visibility, VisibilityOff } from "@mui/icons-material"; // Icons interface Role { id: number; name: string; } interface AddUserDialogProps { open: boolean; onClose: () => void; onUserAdded: () => void; } const AddUserDialog: React.FC = ({ open, onClose, onUserAdded }) => { const [name, setName] = useState(""); const [password, setPassword] = useState("newuser"); const [showPassword, setShowPassword] = useState(false); // Toggle password visibility const [address, setAddress] = useState(""); const [email, setEmail] = useState(""); const [phone_number, setPhoneNumber] = useState(""); const [is_under, setIsUnder] = useState(""); const [roles, setRoles] = useState([]); // const [status, setStatus] = useState(1); // 1 = Active, 0 = Inactive useEffect(() => { fetch(`${process.env.REACT_APP_API_BASE_URL}/role`) .then((res) => res.json()) .then((data) => setRoles(data)) .catch((error) => console.error("Error fetching roles:", error)); }, []); const handleSubmit = () => { const newUser = { name, password, address, email, phone_number, role: 1, // Always "TBT" is_under, // status: status === 1, // Convert 1 -> true, 0 -> false }; const token: string | null = localStorage.getItem('token'); if (!token) { return; } fetch(`${process.env.REACT_APP_API_BASE_URL}/user`, { method: "POST", headers: { "Content-Type": "application/json",'x-api-key': token }, body: JSON.stringify(newUser), }) .then((response) => response.json()) .then(() => { onUserAdded(); onClose(); }) .catch((error) => console.error("Error adding user:", error)); }; return ( Add New User {/* Name */} setName(e.target.value)} InputProps={{ endAdornment: ( ), }} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} /> {/* Email */} setEmail(e.target.value)} InputProps={{ endAdornment: ( ), }} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} /> {/* Password */} setPassword(e.target.value)} InputProps={{ endAdornment: ( setShowPassword(!showPassword)}> {showPassword ? : } ), }} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} /> {/* Address */} setAddress(e.target.value)} InputProps={{ endAdornment: ( ), }} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} /> {/* Phone Number */} setPhoneNumber(e.target.value)} InputProps={{ endAdornment: ( ), }} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} /> {/* Is Under (Dropdown) */} setIsUnder(Number(e.target.value))} sx={{ input: { color: "white" }, label: { color: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }, "&:hover fieldset": { borderColor: "limegreen" }, "&.Mui-focused fieldset": { borderColor: "limegreen" }, }, }} > {roles.map((role) => ( {role.name} ))} {/* Status setStatus(e.target.checked ? 1 : 0)} color="success" /> } label={status === 1 ? "Active" : "Inactive"} sx={{ color: "white", marginTop: 2 }} /> */} ); }; export default AddUserDialog;