import React, { useContext, useState } from "react"; import { AuthContext, tokenExpireError } from "@/authContext"; import MkdSDK from "@/utils/MkdSDK"; import { useForm } from "react-hook-form"; import { useSearchParams } from "react-router-dom"; import { GlobalContext, showToast } from "@/globalContext"; import { clearSearchParams, parseSearchParams } from "@/utils/utils"; import Button from "@/components/Button"; import SwitchBulkMode from "@/components/SwitchBulkMode"; import moment from "moment"; import TreeSDK from "@/utils/TreeSDK"; import { ID_PREFIX } from "@/utils/constants"; import RestoreModal from "./RestoreModal"; import DeletePermanentlyModal from "./DeletePermanentlyModal"; import RestoreAllModal from "./RestoreAllModal"; import { Switch } from "@headlessui/react"; import DeleteAllModal from "./DeleteAll"; let treeSdk = new TreeSDK() const columns = [ { header: "ID", accessor: "id", isSorted: true, isSortedDesc: true, idPrefix: true, }, { header: "Deleted At", accessor: "deleted_at", isSorted: true, isSortedDesc: true, format: (raw) => moment(raw).format("MM/DD/yyyy hh:mm:ss A"), }, { header: "Actions", accessor: "", }, ]; export default function AdminRecycleBinFaqs() { const { dispatch } = React.useContext(AuthContext); const { state: globalState, dispatch: globalDispatch } = React.useContext(GlobalContext); const [bulkMode, setBulkMode] = React.useState(false); const [bulkSelected, setBulkSelected] = React.useState([]); const [searchParams, setSearchParams] = useSearchParams(localStorage.getItem("admin_recycle_filter") ?? ""); const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const [selectedRestore, setSelectedRestore] = useState({}); const [selectedDelete, setSelectedDelete] = useState({}); const [restoreAll, setRestoreAll] = useState(false); const [deleteAll, setDeleteAll] = useState(false); let sdk = new MkdSDK(); let tdk = new TreeSDK(); const { reset, register, handleSubmit, formState: { errors }, } = useForm({ defaultValues: parseSearchParams(searchParams), }); async function getData(data) { setLoading(true); try { let filter = ["ergo_faq.deleted_at IS NOT NULL"]; if (data?.id) { filter.push(`ergo_faq.id = ${data?.id}`); } if (data?.deleted_at) { filter[0] = (`DATE_FORMAT(ergo_faq.deleted_at, '%Y-%m-%d')= '${data?.deleted_at}'`); } const result = await sdk.callRawAPI("/v2/api/custom/ergo/faq/PAGINATE", { "where": filter, "page": 1, "limit": 10 }, "POST" ) setData(result.list); } catch (error) { tokenExpireError(dispatch, error.message); showToast(globalDispatch, error.message, 4000, "ERROR"); } setLoading(false); } function MyToggle(data) { const [enabled, setEnabled] = useState(data.user.status === 1 ? true : false) const { dispatch: globalDispatch } = useContext(GlobalContext); let sdk = new MkdSDK(); async function editUser() { const result = await sdk.callRawAPI("/v2/api/custom/ergo/soft-delete", { id: Number(data.user.id), entity: "user", type: "restore" }, "POST"); if (!result.error) { showToast(globalDispatch, result.message, 4000) getData() } } return ( editUser()} className={`${enabled ? "!bg-gradient-to-r from-primary-dark to-primary-dark" : "bg-gray-300"} relative inline-flex h-[28px] w-[55px] shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75`} > Use setting ) } const onSubmit = (data) => { searchParams.set("id", data.id); searchParams.set("entity_type", data.entity_type); searchParams.set("deleted_at", data.deleted_at); searchParams.set("email", data.email); setSearchParams(searchParams); localStorage.setItem("admin_recycle_filter", searchParams.toString()); getData(data); }; React.useEffect(() => { globalDispatch({ type: "SETPATH", payload: { path: "recycle_bin_faqs", }, }); getData(); }, []); return ( <>

Recycle Bin (Faqs)

{errors.id?.message}

{errors.deleted_at?.message}

{bulkMode && (
{bulkSelected.length > 0 ? (
{" "}
) : null}
)}
{loading ? (
Loading...
) : ( {bulkMode && ( )} {columns.map((column, index) => ( ))} {data .sort((a, b) => new Date(b.deleted_at) - new Date(a.deleted_at)) .map((row, i) => { return ( {bulkMode && ( )} {columns.map((cell, index) => { if (cell.format) { return ( ); } if (cell.accessor == "") { return ( ); } if (cell.accessor == "email" && (row?.user_id || row?.host_id)) { return ( ); } if (cell.accessor == "email" && (row?.email)) { return ( ); } if (cell.accessor == "email" && ((!row?.user_id || !row?.host_id) && !row?.cost)) { return ( ); } if (cell.accessor == "email" && (row?.entity_type == "add_on")) { return ( ); } if (cell.mapping) { return ( ); } return ( ); })} ); })}
{column.header} {column.isSorted} {column.isSorted ? (column.isSortedDesc ? " ▼" : " ▲") : ""}
{ if (bulkSelected.some((item) => item.id == row.id)) { setBulkSelected((prev) => { let copy = [...prev]; copy.splice( prev.findIndex((item) => item.id == row.id), 1, ); return copy; }); } else { setBulkSelected((prev) => [...prev, { id: row.id, table: row.entity_type }]); } }} checked={bulkSelected.some((item) => item.id == row.id)} onChange={() => { }} /> {cell.format(row[cell.accessor])} {(row.email) &&
} {(!row.email) && }
{getUserDetail(row?.user_id || row?.host_id)} {getUserDetail(row?.id)} {getSpaceHost(row?.property_id)} {getAddonOwner(row?.id)} {cell.mapping[row[cell.accessor]]} {row[cell.accessor]}
)}
setSelectedRestore({})} data={selectedRestore} onSuccess={() => getData()} /> setRestoreAll(false)} records={bulkSelected} onSuccess={() => { setBulkSelected([]); getData(); }} /> setDeleteAll(false)} records={bulkSelected} table="faq" onSuccess={() => { setBulkSelected([]); getData(); }} /> setSelectedDelete({})} data={selectedDelete} onSuccess={() => getData()} table="faq" /> ); }