import { Button } from "../../components/ui/button"; import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger, } from "../../components/ui/dialog"; import { Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react"; import { IoMdAdd } from "react-icons/io"; import { Checkbox } from "../../components/ui/checkbox"; import { PermissionResponse, useCreateSubAdminPostMutation } from "../../Redux/Service/manage.subadmin.service"; import { toaster, Toaster } from "../../components/ui/toaster"; import { useEffect, useState } from "react"; function AddModel({ refetch, allPermissions }: { refetch: VoidFunction, allPermissions: PermissionResponse }) { const [createSubAdminPost] = useCreateSubAdminPostMutation(); // State fields const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); const [userName, setUserName] = useState(""); const [dateOfBirth, setDateOfBirth] = useState(""); const [gender, setGender] = useState(""); const [email, setEmail] = useState(""); const [phonenumber, setPhonenumber] = useState(""); const [permissions, setPermission] = useState([]); const [isOpen, setIsOpen] = useState(false); // const [ setIsOpen] = useState(false); const handleOpenModal = () => { setIsOpen(true); }; const handleCheckboxToggle = (permissionId: number) => { setPermission((prevData) => prevData.includes(permissionId) ? prevData.filter((id) => id !== permissionId) : [...prevData, permissionId] ); }; useEffect(() => { if (!isOpen) { setFirstName(""); setLastName(""); setUserName(""); setDateOfBirth(""); setGender(""); setEmail(""); setPhonenumber(""); setPermission([]); } }, [isOpen]); const handleSubmit = async () => { if ( !firstName.trim() || !lastName.trim() || !userName.trim() || !dateOfBirth.trim() || !gender.trim() ) { toaster.create({ title: "Error", description: "Please fill in all required fields", type: "error", }); return; } const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { toaster.create({ title: "Invalid Email", description: "Please enter a valid email address", type: "error", }); return; } if (phonenumber.length !== 10) { toaster.create({ title: "Invalid Phone Number", description: "Phone number must be exactly 10 digits", type: "error", }); return; } const payload = { user_name: userName, first_name: firstName, last_name: lastName, date_of_birth: dateOfBirth, gender: gender, email_address: email, phone_number: phonenumber, permission: permissions.filter((id) => typeof id === "number"), // created_by: 1, }; try { const response = await createSubAdminPost(payload).unwrap(); if (response) { toaster.create({ title: "Success", description: "Sub-admin created successfully", type: "success", }); refetch(); // setIsOpen(false); setFirstName(""); setLastName(""); setUserName(""); setDateOfBirth(""); setGender(""); setIsOpen(false); } } catch (error:any) { console.error("Error creating sub-admin:", error); toaster.create({ title: "Error", description: error ? error.data.message : "Failed to create sub-admin", type: "error", }); } }; return ( setIsOpen(open)}> Add Sub Admin Account First Name setFirstName(e.target.value)} /> Last Name setLastName(e.target.value)} /> Username setUserName(e.target.value)} /> DOB setDateOfBirth(e.target.value)} /> Gender setGender(e.target.value)} /> Email Address setEmail(e.target.value)} /> Phone Number { const value = e.target.value; if (/^\d*$/.test(value)) { // Only allow digits setPhonenumber(value); } }} /> Permissions {allPermissions?.data.permission.map((permission: any) => ( handleCheckboxToggle(permission.id)}> {permission.app_resource_title} ))} setIsOpen(false)} /> ); } export default AddModel;