import { DASHBOARD_ROUTE } from "@modules/dashboard/routes/route.constant"; import { getCampaignStepsService } from "@modules/dashboard/service/campaigns.service"; import { useQuery } from "@tanstack/react-query"; import { MoveLeft } from "lucide-react"; import { useEffect, useState, type FC } from "react"; import { useNavigate, useParams } from "react-router-dom"; import type { CampaignProcess, GroupedCampaign } from "./step.type"; const StepsPage: FC = () => { const { campaignId } = useParams<{ campaignId: string }>(); const navigate = useNavigate(); const [steps, setSteps] = useState([]); const [selectedStepId, setSelectedStepId] = useState(null); const { data, isLoading, error } = useQuery>({ queryKey: ["dynamic-step"], queryFn: () => getCampaignStepsService(campaignId!), }); useEffect(() => { if (data && Object.keys(data).length > 0) { const processes: CampaignProcess[] = Object.keys(data[0]) .filter( (key) => key.startsWith("process") && key.endsWith("_id") === false && key.includes("_") ) .map((key) => { const index = key.match(/process(\d+)_/)?.[1]; if (!index) return null; return { processId: data[0][`process${index}`], category: data[0][`process${index}_category`], score: data[0][`process${index}_score`], stageId: data[0][`process${index}_stage_id`], status: data[0][`process${index}_status`], }; }) .filter(Boolean) as CampaignProcess[]; const grouped: GroupedCampaign[] = Object.values( processes.reduce((acc, item) => { if (!acc[item.category]) { acc[item.category] = { category: item.category, processes: [], stageID: Number(item.stageId), processId: Number(item.processId), }; } acc[item.category].processes.push(item); return acc; }, {} as Record) ); setSteps(grouped); } }, [data]); const handleBack = () => { navigate( `${DASHBOARD_ROUTE.sub}/${DASHBOARD_ROUTE.campaigns}/${campaignId}` ); }; // navigate(`${DASHBOARD_ROUTE.dynamicForm}?stageID=${stageID}`); // navigate(`${DASHBOARD_ROUTE.dynamicForm}?processID=${processID}`); const handleStepClick = (step: GroupedCampaign) => { // setSelectedStepId(step.processId); if ( step.stageID !== null && step.stageID !== 0 && step.processId !== null && step.processId !== 0 ) { navigate( `${DASHBOARD_ROUTE.sub}/${DASHBOARD_ROUTE.dynamicForm}?stageID=${step.stageID}`, { replace: true, } ); } if ( (step.processId != 0 && step.processId != null && step.processId != undefined && step.stageID === null) || step.stageID === undefined ) { navigate( `${DASHBOARD_ROUTE.sub}/${DASHBOARD_ROUTE.dynamicForm}?processID=${step.processId}`, { replace: true, } ); } if ( (step.stageID != 0 && step.stageID != null && step.stageID != undefined && step.processId === null) || step.processId === undefined ) { navigate( `${DASHBOARD_ROUTE.sub}/${DASHBOARD_ROUTE.dynamicForm}?stageID=${step.stageID}`, { replace: true, } ); } }; if (isLoading) { return (
در حال بارگزاری ....
); } if (error) { return (
{error.message}
); } return (
{/* Back Button */}

مراحل جزیره

{steps.length === 0 ? (

مرحله ای یافت نشد.

) : (
    {steps.map((step, index) => (
  • handleStepClick(step)} tabIndex={0} // Make list item focusable >
    {index + 1}

    {step.category}

    {step.category && step.category && step.category !== step.category && (

    {step.category}

    )}
  • ))}
)}
); }; export default StepsPage;