diff --git a/src/Pages/internify/LoginInternify.tsx b/src/Pages/internify/LoginInternify.tsx index f728d83..16bed3a 100644 --- a/src/Pages/internify/LoginInternify.tsx +++ b/src/Pages/internify/LoginInternify.tsx @@ -71,8 +71,8 @@ export default function InternifyLogin() { HUMIC LMS PORTAL
- -Access your dashboard with your credentials.
diff --git a/src/Pages/internify/intern/components/HomeCalendar.tsx b/src/Pages/internify/intern/components/HomeCalendar.tsx index 7b34212..8026a4b 100644 --- a/src/Pages/internify/intern/components/HomeCalendar.tsx +++ b/src/Pages/internify/intern/components/HomeCalendar.tsx @@ -1,8 +1,9 @@ import { useState, useEffect } from 'react' import { ChevronLeft, ChevronRight } from 'lucide-react' import { useMyTasks } from '../../../../hooks/useProjects'; -//SEMENTARA USERSERVICES BELUM KUBUAT import api from '../../../../lib/api'; +import { useCurrentUser } from '../../../../hooks/useUser'; +import { useAllMentorTasks } from '../../../../hooks/useTasks'; const DAY_LABELS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] const MONTH_NAMES = [ @@ -18,24 +19,23 @@ function getFirstDayOfMonth(year: number, month: number) { return new Date(year, month, 1).getDay() } -interface roleUser { - role: "mentor" | "intern" | "admin"; -} - export default function HomeCalendar() { const [today, setToday] = useState(new Date()); - const [role, setRole] = useState<"mentor" | "intern" | "admin" | null>(null); - const { tasks } = useMyTasks(); + const { user } = useCurrentUser(); - useEffect(() => { - api.get("/auth-api/me") - .then((res) => setRole(res.data.data.role)) - .catch((err) => console.error("Failed to fetch user:", err)); - }, []); + const isIntern = user?.role === "intern"; + const { tasks: internTasks } = useMyTasks(); + const { tasks: mentorTasks } = useAllMentorTasks(!isIntern && user !== null); - const DEADLINES = role === "intern" - ? tasks.map(task => ({ date: new Date(task.deadline_at), label: task.title, })) - : []; + const DEADLINES = isIntern + ? internTasks.map(task => ({ + date: new Date(task.deadline_at), + label: task.title, + })) + : mentorTasks.map(task => ({ + date: new Date(task.deadline_at), + label: `[${task.project_name}] ${task.title}`, + })); useEffect(() => { const interval = setInterval(() => { diff --git a/src/Pages/internify/mentor/MentorProjectDetailPage.tsx b/src/Pages/internify/mentor/MentorProjectDetailPage.tsx index bedd9b9..3762fde 100644 --- a/src/Pages/internify/mentor/MentorProjectDetailPage.tsx +++ b/src/Pages/internify/mentor/MentorProjectDetailPage.tsx @@ -1,33 +1,41 @@ import { useParams, useNavigate } from "react-router-dom"; import { useState } from "react"; -import { mockProjects } from "../../../lib/mockProjects"; -import { Calendar, Edit, SlidersHorizontal, Search } from "lucide-react"; +import { Calendar, Edit } from "lucide-react"; import EditSubmissionModal from "./components/EditSubmissionTask"; - +import { useTaskSubmissions } from "../../../hooks/useTasks"; 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 targetedProject = mockProjects.find((p) => toSlug(p.name) === slug); - - if (!targetedProject) { - 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 (Task not found.
-
-
- {task.description} -
-{error}
; + if (!task) return null; + + const toSlug = (name: string) => name.toLowerCase().replace(/\s+/g, '-'); + + const internSubmission = task.submissions.find( + (s) => toSlug(s.full_name) === nameIntern + ); + + if (!internSubmission) + return ( +Submission not found.
+
+
+ {task.description} +
+