import { useParams, useNavigate } from "react-router-dom"; import { useState } from "react"; import { Calendar, Edit } from "lucide-react"; import EditSubmissionModal from "./components/EditSubmissionTask"; import { useTaskSubmissions } from "../../../hooks/useTasks"; import type { ProjectTask } from "../../../types/task.types"; import { useProjectDetail } from "../../../hooks/useProjects"; const toSlug = (name: string) => name.toLowerCase().replace(/\s+/g, '-'); export default function MentorProjectsDetailPage() { const navigate = useNavigate(); const { slug, taskSlug } = useParams<{ slug: string; taskSlug: string }>(); const { task, loading, error, refetch } = useTaskSubmissions(taskSlug!, slug); const [openModal, setOpenModal] = useState(false); const { project } = useProjectDetail(slug!); const isProjectActive = project?.status === "active" const handleEditSuccess = (updatedTask: ProjectTask) => { if (updatedTask.slug !== taskSlug) { navigate(`/mentor/projects/${slug}/${updatedTask.slug}`, { replace: true }); } else { refetch(); } }; if (loading) return (
{[...Array(3)].map((_, i) => (
))}
); if (error) return

{error}

; if (!task) return null; const formatDeadline = (isoString: string) => { const date = new Date(isoString); const dd = String(date.getDate()).padStart(2, '0'); const mm = String(date.getMonth() + 1).padStart(2, '0'); const yy = String(date.getFullYear()).slice(-2); const hh = String(date.getHours()).padStart(2, '0'); const min = String(date.getMinutes()).padStart(2, '0'); return `${dd}/${mm}/${yy} pada jam ${hh}:${min}`; }; return (
{/* Header Utama */}

{task.title}

{/* Kotak Informasi Detail & Deadline */}

Description

{task.description}

Deadline

{formatDeadline(task.deadline_at)}
{/* Panel Tabel Intern Submissions */}
{/* Header Tabel Kontrol */}

Intern Submissions

{task.submissions?.length || 0} total
{/* Isi Tabel */}
{task.submissions.map((sub, idx) => { return ( {/* Kolom Tanggal Kumpul */} {/* Kolom Badge Status */} {/* Kolom Tombol Aksi */} ); })}
Intern Name Submitted Date Status Actions
{sub.profile_picture ? :
} {sub.full_name}
{sub.submitted_at ? new Date(sub.submitted_at).toLocaleString("id-ID", { day: "numeric", month: "long", year: "numeric", }) : "-"} {sub.display_status === "done" && ( Done )} {sub.display_status === "pending" && ( Pending )} {sub.display_status === "overdue" && ( Overdue )}
{openModal && ( setOpenModal(false)} task={task} onSuccess={handleEditSuccess} /> )}
); }