import { Badge, Box, Button, HStack, Input, Switch, Text, Tooltip, useToast, } from "@chakra-ui/react"; import React, { useContext, useEffect, useState } from "react"; import { Link, Link as RouterLink } from "react-router-dom"; import { AddIcon, DeleteIcon, EditIcon } from "@chakra-ui/icons"; import { useNavigate } from "react-router-dom"; import { OPACITY_ON_LOAD } from "../../Layout/animations"; import NormalTable from "../../Components/DataTable/NormalTable"; import Pagination from "../../Components/Pagination"; import GlobalStateContext from "../../Contexts/GlobalStateContext"; import CustomAlertDialog from "../../Components/CustomAlertDialog"; import ToastBox from "../../Components/ToastBox"; import { TABLE_PAGINATION } from "../../Constants/Paginations"; import { generateSerialNumber } from "../../Constants/Constants"; import { useGetSponserMasterQuery } from "../../Services/io.service"; import { useGetSubAdminMasterQuery, useToggleStatusMutation, } from "../../Services/subadmin.service"; import RoleSwitchButton from "../../Components/RoleSwitchButton"; export const formatDate = (date) => { const d = new Date(date); const year = d.getFullYear(); const month = String(d.getMonth() + 1).padStart(2, "0"); // Months are 0-indexed const day = String(d.getDate()).padStart(2, "0"); return `${day}/${month}/${year}`; }; const SubAdmin = () => { const navigate = useNavigate(); const toast = useToast(); const [isLoading, setIsLoading] = useState(false); const [deleteAlert, setDeleteAlert] = useState(false); const [actionId, setActionId] = useState(false); const [mouseEntered, setMouseEntered] = useState(false); const [mouseEnteredId, setMouseEnteredId] = useState(""); // const [deleteSponser] = useDeleteSponserMutation(); const { sponser, setSponser, slideFromRight } = useContext(GlobalStateContext); // =========================== [Use State] ============================= const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size); const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page); const [searchTerm, setSearchTerm] = useState(""); const [debouncedSearchTerm, setDebouncedSearchTerm] = useState(""); const [isSwitchOn, setIsSwitchOn] = useState(true); // Debounce the search term to avoid making a request on every keystroke useEffect(() => { const handler = setTimeout(() => { setDebouncedSearchTerm(searchTerm); }, 500); // Adjust delay as needed return () => { clearTimeout(handler); }; }, [searchTerm]); const { data: subAdmin, error, isLoading: isSponserLoading, } = useGetSubAdminMasterQuery(); const [toggleStatus] = useToggleStatusMutation(); // useEffect(() => { // if (subAdmin?.data) { // setIsSwitchOn(subAdmin?.role?.role); // console.log(subAdmin); // } // }, [subAdmin]); // ==============================[Table Filter]======================== const filteredData = subAdmin?.data?.filter((item) => { const name = item.firstName; const searchLower = searchTerm?.toLowerCase(); const nameMatches = name?.toLowerCase().includes(searchLower); return nameMatches; }); const handleToggleStatus = async (isMaker, id) => { console.log("hit"); const data = { role_xid: isMaker ? 1 : 2, }; try { const res = await toggleStatus(id, data).unwrap(); if (res?.error) { toast({ render: () => ( ), }); } else if (res) { toast({ render: () => ( ), }); } } catch (error) { toast({ render: () => ( ), }); } }; // ====================================================[Table Setup]================================================================ const tableHeadRow = [ "Sr No", "First Name", "Last Name", "Email Address", "Role", "Action", ]; const extractedArray = subAdmin?.data?.map((item, index) => ({ "Sr No": ( {/* {item.id} */} {generateSerialNumber(index, currentPage, pageSize)} ), "First Name": ( {item?.firstName} ), "Last Name": ( {item?.lastName} ), "Email Address": ( {item?.emailAddress} ), Role: ( {item?.role[0]?.role} handleToggleStatus(item?.role[0]?.role === "Maker", item?.id) } isChecked={item?.role[0]?.role === "Maker"} // colorScheme={item?.role[0]?.role === "Maker" ? "green" : "teal"} sx={{ ".chakra-switch__track": { bg: item?.role[0]?.role === "Maker" ? "#00ffcc" : "#b3ff99", // "Off" state color }, }} /> {/* handleToggleStatus(item?.role[0]?.role=== "Maker")} /> */} ), Action: ( {/* */} ), })); // =========================== [ Delete Function ] ================================= // const handleDelete = async () => { // console.log(actionId); // setIsLoading(true); // try { // const response = await deleteSponser(actionId); // console.log(response?.data); // if (response?.error?.data?.code === 400) { // toast({ // render: () => ( // // ), // }); // setIsLoading(false); // setDeleteAlert(false); // } else if ( // response?.data?.statusCode === 201 || // response?.data?.statusCode === 200 // ) { // toast({ // render: () => ( // // ), // }); // setIsLoading(false); // setDeleteAlert(false); // } // } catch (error) {} // }; console.log(isSponserLoading); return ( {/* =======================[Search Input]======================== */} setSearchTerm(e.target.value)} /> {/* ====================[Pagination]===================== */} {/* =====================[Add Button]===================== */} {/* =================== [Data Table] ===================== */} {/* ======================== [Modal] ======================== */} setDeleteAlert(false)} isOpen={deleteAlert} message={"Are you sure you want to delete sponers?"} // alertHandler={handleDelete} isLoading={isLoading} /> ); }; export default SubAdmin;