import { useEffect, useState } from "react"; import styles from "../../styles"; import { colors } from "../../styles"; import TextField from "@mui/material/TextField"; import EditIcon from "@mui/icons-material/Edit"; import Button from "../Button/Button"; import { toast } from "react-toastify"; import { EquipmentAPI, EquipmentRemoveAPI, EquipmentUpdateAPI, } from "../API/API"; import RadioGroup from "@mui/material/RadioGroup"; import FormControlLabel from "@mui/material/FormControlLabel"; import FormControl from "@mui/material/FormControl"; import FormLabel from "@mui/material/FormLabel"; import Radio from "@mui/material/Radio"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; import { CircularProgress } from "@mui/material"; import React from "react"; export default function EditSKUModal(props: { id: number; setOpen: React.Dispatch>; }) { const queryClient = useQueryClient(); const [item, setItem] = useState({ name: "", description: "", category: "", }); const [error, setError] = useState(""); const equipment = useQuery({ queryKey: ["equipment", props.id], queryFn: () => EquipmentAPI(Number(props.id)), }); useEffect(() => { if (equipment.data) { setItem({ ...item, name: equipment.data.name, description: equipment.data.description, category: equipment.data.category, }); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [equipment.data]); const update_mutation = useMutation({ mutationFn: async () => { const data = await EquipmentUpdateAPI(item, props.id); if (data[0] != true) { return Promise.reject(new Error(JSON.stringify(data[1]))); } return data; }, onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ["equipments"] }); queryClient.invalidateQueries({ queryKey: ["equipment", props.id], }); setError("Updated successfully"); toast( `Item updated successfuly, ${ typeof data[1] == "object" ? "ID:" + data[1].id : "" }`, { position: "top-right", autoClose: 2000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", } ); if (typeof data[1] == "object") { setItem({ ...item, name: data[1].name, description: data[1].description, category: data[1].category, }); } }, onError: (error) => { setError(JSON.stringify(error)); }, }); const delete_mutation = useMutation({ mutationFn: async () => { const data = await EquipmentRemoveAPI(props.id); if (data[0] != true) { return Promise.reject(new Error(JSON.stringify(data[1]))); } return data; }, onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ["equipments"] }); queryClient.invalidateQueries({ queryKey: ["equipment", props.id], }); setError("Deleted successfully"); toast("SKU deleted successfuly", { position: "top-right", autoClose: 2000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", }); props.setOpen(false); if (typeof data[1] == "object") { setItem({ ...item, name: data[1].name, description: data[1].description, category: data[1].category, }); } }, onError: (error) => { setError(JSON.stringify(error)); }, }); if (equipment.isLoading) { return (

Loading

); } return ( <>

Edit SKU

) => { setItem({ ...item, name: e.target.value }); setError(""); }} value={item.name} placeholder={"Enter SKU name"} /> ) => setItem({ ...item, description: e.target.value }) } value={item.description} placeholder={"Give a brief description of the SKU"} /> Category ) => { setItem({ ...item, category: e.target.value }); setError(""); }} value={item.category} >
} label="Workstation" style={styles.text_dark} /> } label="Networking" style={styles.text_dark} /> } label="CCTV" style={styles.text_dark} />
} label="Furniture" style={styles.text_dark} /> } label="Peripherals" style={styles.text_dark} /> } label="Miscellaneous" style={styles.text_dark} />

{error}

); }