import axios from "axios"; import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { BulkUserCreattionType } from "../../type/BulkUserCreattionType"; import { Ji } from "../../type/TpType"; import { CSVParseType } from "../../type/CSVParseType"; function BulkUsers() { const [userData, setUserData] = useState([]); const [practical, setPractical] = useState("0"); const navigate = useNavigate(); const [jis, setJis] = useState([]); const handlePracticalChange = (e: React.ChangeEvent) => { setPractical(e.target.value); }; useEffect(() => { axios.get("/api/ji/listall").then((res) => { setJis(res.data); }); }, []); const handleFileChange = (event: React.ChangeEvent) => { if (event.target.files) { const selectedFile = event.target.files[0]; parseCSV(selectedFile); } }; const parseCSV = (file: File) => { const reader = new FileReader(); reader.onload = (event: ProgressEvent) => { if (event.target) { const text = event.target.result!.toString(); const rows = text.split("\n").map((row) => row.split(",")); const formattedData = rows.map((row) => ({ name: row[0], email: row[1], password: row[2], instance_name: row[3], instance_ssh: row[4], instance_port: row[5], instance_pwd: row[6], })); setUserData(formattedData); } }; reader.readAsText(file); }; const handleSubmit = () => { axios .post("/api/users", { users: userData.filter((user: CSVParseType) => user.name !== ""), jiId: 1, }).then((res) => { if (res.status === 200) { alert(`Users succesfully created !\n${res}`); } if (res.status === 202) alert(`Couldn't create some users`); if (res.status === 500) alert(`Couldn't create ANY users`); }); }; return (

Bulk User Creation

{userData.length > 0 && (
{userData.map((user: BulkUserCreattionType, index: number) => ( ))}
Name Email Password Instance name Instance ssh Instance port Instance pwd
{user.name} {user.email}
)}
); } export default BulkUsers;