import { useState } from "react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { chanegItemStatusApi } from "@/utils/api"; import { toast } from "sonner"; import SoldOutModal from "./SoldOutModal"; import ReusableAlertDialog from "@/components/Common/ReusableAlertDialog"; import { t } from "@/utils"; import { useNavigate } from "@/components/Common/useNavigate"; const AdsStatusChangeCards = ({ productDetails, setProductDetails, status, setStatus, }) => { const { navigate } = useNavigate(); const [IsChangingStatus, setIsChangingStatus] = useState(false); const [showSoldOut, setShowSoldOut] = useState(false); const [showConfirmModal, setShowConfirmModal] = useState(false); const [selectedRadioValue, setSelectedRadioValue] = useState(null); const isJobAd = productDetails?.category?.is_job_category === 1; const isSoftRejected = productDetails?.status === "soft rejected" || productDetails?.status === "resubmitted"; const IsDisableSelect = !( productDetails?.status === "approved" || productDetails?.status === "inactive" ); const isShowRejectedReason = productDetails?.rejected_reason && (productDetails?.status === "soft rejected" || productDetails?.status === "permanent rejected"); const resubmitAdForReview = async () => { try { const res = await chanegItemStatusApi.changeItemStatus({ item_id: productDetails?.id, status: "resubmitted", }); if (res?.data?.error === false) { toast(t("adResubmitted")); setProductDetails((prev) => ({ ...prev, status: "resubmitted" })); } } catch (error) { console.log(error); toast(error.message); } }; const handleStatusChange = (newStatus) => { setStatus(newStatus); }; const updateItemStatus = async () => { if (productDetails?.status === status) { toast.error(t("changeStatusToSave")); return; } if (status === "sold out") { setShowSoldOut(true); return; } try { setIsChangingStatus(true); const res = await chanegItemStatusApi.changeItemStatus({ item_id: productDetails?.id, status: status === "approved" ? "active" : status, }); if (res?.data?.error === false) { setProductDetails((prev) => ({ ...prev, status })); toast.success(t("statusUpdated")); navigate("/my-ads"); } else { toast.error(res?.data?.message); } } catch (error) { console.log("error", error); } finally { setIsChangingStatus(false); } }; const makeItemSoldOut = async () => { try { setIsChangingStatus(true); await new Promise((resolve) => setTimeout(resolve, 5000)); const res = await chanegItemStatusApi.changeItemStatus({ item_id: productDetails?.id, status: "sold out", sold_to: selectedRadioValue, }); if (res?.data?.error === false) { toast.success(t("statusUpdated")); setProductDetails((prev) => ({ ...prev, status: "sold out" })); setShowConfirmModal(false); } else { toast.error(t("failedToUpdateStatus")); } } catch (error) { console.error(error); } finally { setIsChangingStatus(false); } }; return ( <> {isSoftRejected ? (
{t("adWasRejectedResubmitNow")}
{productDetails?.rejected_reason && (

{t("rejectedReason")}:{" "} {productDetails?.rejected_reason}

)}
) : (
{t("changeStatus")}
{isShowRejectedReason && (

{t("rejectedReason")}:{" "} {productDetails?.rejected_reason}

)}
)} setShowConfirmModal(false)} onConfirm={makeItemSoldOut} title={isJobAd ? t("confirmHire") : t("confirmSoldOut")} description={ isJobAd ? t("markAsClosedDescription") : t("cantUndoChanges") } cancelText={t("cancel")} confirmText={t("confirm")} confirmDisabled={IsChangingStatus} /> ); }; export default AdsStatusChangeCards;