diff --git a/src/Pages/internify/intern/components/CertificateNotAvailable.tsx b/src/Pages/internify/intern/components/CertificateNotAvailable.tsx index 7d3a117..97eeab3 100644 --- a/src/Pages/internify/intern/components/CertificateNotAvailable.tsx +++ b/src/Pages/internify/intern/components/CertificateNotAvailable.tsx @@ -59,6 +59,13 @@ export default function CertificateNotAvailable({

Semua tugas telah diselesaikan! Silahkan tunggu untuk mendapatkan sertifikat

+ ) : ( <> @@ -84,15 +91,6 @@ export default function CertificateNotAvailable({ /> - - - {error &&

{error}

} )} diff --git a/src/Pages/internify/intern/components/HomeProjectList.tsx b/src/Pages/internify/intern/components/HomeProjectList.tsx index ebbdfd2..fb273dc 100644 --- a/src/Pages/internify/intern/components/HomeProjectList.tsx +++ b/src/Pages/internify/intern/components/HomeProjectList.tsx @@ -24,7 +24,7 @@ const HomeProjectList = () => { {projects.map((project) => (
navigate(`/intern/projects/${toSlug(project.project_name)}`)} + onClick={() => navigate(`/intern/projects/${toSlug(project.slug)}`)} className="flex items-center gap-4 border border-card-outline rounded-lg px-4 py-3 hover:bg-gray-50 cursor-pointer transition-colors duration-150" >
diff --git a/src/Pages/internify/intern/components/ProjectTaskCard.tsx b/src/Pages/internify/intern/components/ProjectTaskCard.tsx index 26a3479..43f034d 100644 --- a/src/Pages/internify/intern/components/ProjectTaskCard.tsx +++ b/src/Pages/internify/intern/components/ProjectTaskCard.tsx @@ -7,6 +7,16 @@ const formatDate = (dateStr: string) => const formatTime = (dateStr: string) => new Date(dateStr).toLocaleTimeString('id-ID', { hour: '2-digit', minute: '2-digit' }); +const statusStyles: Record = { + not_submitted: "bg-gray-50 text-gray-700 border-gray-200", + submitted: "bg-green-50 text-green-700 border-green-200", +}; + +const statusLabels: Record = { + not_submitted: "Pending", + submitted: "Submitted", +}; + export default function TaskCard({ task }: { task: InternTaskItem }) { const navigate = useNavigate(); return ( @@ -29,13 +39,12 @@ export default function TaskCard({ task }: { task: InternTaskItem }) {
-
+
-
+
- {task.submission_status} + className={`font-semibold text-xs px-3.5 py-[5px] rounded-md whitespace-nowrap border ${statusStyles[task.submission_status]}`}> + {statusLabels[task.submission_status]}
diff --git a/src/Pages/internify/mentor/components/AddInternsDialog.tsx b/src/Pages/internify/mentor/components/AddInternsDialog.tsx index 2a13239..f4850e3 100644 --- a/src/Pages/internify/mentor/components/AddInternsDialog.tsx +++ b/src/Pages/internify/mentor/components/AddInternsDialog.tsx @@ -19,7 +19,7 @@ export default function ManageInternsModal({ isOpen, onClose, projectId, initial const [invitedList, setInvitedList] = useState(initialMembers); const { mahasiswa, loading: loadingMahasiswa } = useMahasiswa(); - const { assign, loading: assigning } = useAssignMember(); + const { assign, loading: assigning, error } = useAssignMember(); // Sync saat modal dibuka useEffect(() => { @@ -84,8 +84,13 @@ export default function ManageInternsModal({ isOpen, onClose, projectId, initial />
+ {error && +
+ {error}: Sudah berada di project lain +
+ } -
+
{/* Sudah jadi member */} {invitedList.map((member) => (
diff --git a/src/Pages/internify/mentor/components/MentorTaskCard.tsx b/src/Pages/internify/mentor/components/MentorTaskCard.tsx index 4e0cfb6..cda6dba 100644 --- a/src/Pages/internify/mentor/components/MentorTaskCard.tsx +++ b/src/Pages/internify/mentor/components/MentorTaskCard.tsx @@ -17,7 +17,7 @@ export default function MentorTaskCard({ task }: {task: ProjectTask}) { return (
diff --git a/src/hooks/useProjects.ts b/src/hooks/useProjects.ts index f313574..8319780 100644 --- a/src/hooks/useProjects.ts +++ b/src/hooks/useProjects.ts @@ -253,6 +253,7 @@ export const useAssignMember = () => { return { assign, loading, error }; }; +// Hapus/Keluarkan Member dari Projek export const useRemoveMember = () => { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts index f87679d..63d2317 100644 --- a/src/hooks/useUser.ts +++ b/src/hooks/useUser.ts @@ -101,8 +101,7 @@ export const useUpdateProfile = () => { return { save, loading, error, successMsg, setSuccessMsg, setError }; }; - - +// Ambil Seluruh Mahasiswa export const useMahasiswa = () => { const [mahasiswa, setMahasiswa] = useState([]); const [loading, setLoading] = useState(true); diff --git a/src/types/project.types.ts b/src/types/project.types.ts index 5825a66..c78b959 100644 --- a/src/types/project.types.ts +++ b/src/types/project.types.ts @@ -48,7 +48,7 @@ export interface InternTaskItem { description: string; deadline_at: string; submission_type: "file_upload" | "url_link"; - submission_status: "pending" | "submitted" | "done" | "overdue"; + submission_status: "not_submitted" | "submitted"; submission_details: { id: number; file_path: string | null;