import { Box, HStack, Image, Spinner, Text } from "@chakra-ui/react"; import MainFrame from "../../../components/MainFrame" import EditDetails from "./EditDetails"; // import { InputGroup } from "../../../components/ui/input-group"; // import { LuSearch } from "react-icons/lu"; import DataTable from "../../../components/DataTable"; import AlertDailog from "../../../components/AlertDailog"; import { Switch } from "../../../components/ui/switch"; import FaqAddModel from "./FaqAddModel"; import Delete from "../../../components/ActionIcons/Delete"; import { useEffect, useState } from "react"; import { FaqData, useDeleteFaqPostMutation, useFaqToggleMutation, useGetFaqQuery } from "../../../Redux/Service/faqs.service"; import SearchComponent from "../../../components/SearchComponent"; import NoData from "../../../components/NoData"; import { Toaster, toaster } from "../../../components/ui/toaster"; // table data const tableHeadRow = [ "Sr. No", 'Category', "Question", "Answer", "Action", ]; // const managepost: any[] = [ // ...Array.from({ length: 12 }, (_, i) => ({ // "Sr. No": i + 1, // "Question": "Lorem Ipsum", // "Answer": "Lorem Ipsum", // "Action": ( // // // // // {/* */} // // } // alertText="Delete Users" // alertIcon={} // alertCaption="are you sure you want to delete ?" // onConfirm={() => { // console.log("User deleted:", i + 1); // }} // /> // // ), // })), // ]; const FAQ = () => { const [currentPage, setCurrentPage] = useState(1); const { data, refetch, isLoading, isFetching, isError } = useGetFaqQuery(currentPage) const [localData, setLocalData] = useState([]); const [faqToggle] = useFaqToggleMutation() const [deleteFaqPost] = useDeleteFaqPostMutation() const [searchTerm, setSearchTerm] = useState(""); const [deleteModal, setDeleteModal] = useState(false) const [selectedFaqId, setSelectedFaqId] = useState(null); console.log('DATA', data?.data.data); useEffect(() => { if (data) { setLocalData(data?.data.data); } }, [data]); const handlePageChange = (page: number) => { setCurrentPage(page); }; const handleToggle = async (agencyId: number, currentStatus: string) => { const newStatus = currentStatus === '1' ? '0' : '1'; setLocalData((prevData) => prevData.map((agency) => agency.id === agencyId ? { ...agency, is_active: newStatus } : agency ) ); try { await faqToggle({ id: agencyId, is_active: newStatus }).unwrap(); toaster.create({ title: "Success", description: "Status updated successfully", type: "success", }); setTimeout(() => { refetch(); }, 500); } catch (error) { console.error("Error updating privacy policy:", error); toaster.create({ title: "Error", description: "Someting went wrong.", type: "error", }); setLocalData((prevData) => prevData.map((agency) => agency.id === agencyId ? { ...agency, is_active: currentStatus } : agency ) ); } }; const handleDeleteFaq = async (faqId: number) => { try { const response = await deleteFaqPost({ id: faqId }).unwrap(); if (response?.status === "success") { toaster.create({ title: "Success", description: "FAQ deleted successfully", type: "success", }); refetch() console.log("FAQ deleted successfully:", response); } // Optionally, refetch data or update state after deletion } catch (error) { console.error("Error deleting FAQ:", error); toaster.create({ title: "Error", description: "Something went wrong", type: "error", }); } }; const filteredData = localData?.filter((agency) => agency.translations.some((translation: any) => { const searchLower = searchTerm.toLowerCase(); const questionMatch = translation.question?.toLowerCase().includes(searchLower); const answerMatch = translation.answer?.toLowerCase().includes(searchLower); return questionMatch || answerMatch; }) ); console.log("filteredData", filteredData); const managepost = filteredData?.flatMap((agency: FaqData, index: number) => agency.translations.map((translation: any) => ({ 'id': translation.id, "Sr. No": (currentPage - 1) * (data?.data.per_page ?? 0) + index + 1, "Question": translation.question, "Answer": translation.answer, 'Category': agency.principal_type_xid === 2 ? "Recruiter" : "Job Seeker", "Action": ( { setSelectedFaqId(agency.id); setDeleteModal(true) }} />} alertText="Delete FAQ" alertIcon={} alertCaption="are you sure you want to delete ?" onClose={() => setDeleteModal(false)} onConfirm={() => { // console.log("Deleting FAQ with ID:", selectedFaqId); // Correct ID if (selectedFaqId) { setDeleteModal(false); handleDeleteFaq(selectedFaqId); } }} /> handleToggle(Number(agency.id), agency.is_active.toString())} checked={Boolean(Number(agency.is_active))} key={`switch-${agency.id}`} /> ), }))) if (isFetching) { return ( ) } return ( FAQs {/* */} {isFetching && } {!isLoading && !data?.data ? ( ) : ()} ) } export default FAQ