import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Search } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { admissionService } from "@/services/admission.service"; import type { Admission, AdmissionState } from "@/types/admission"; const STATE_TABS: { value: string; label: string }[] = [ { value: "all", label: "All" }, { value: "draft", label: "Draft" }, { value: "submit", label: "Submitted" }, { value: "confirm", label: "Confirmed" }, { value: "admission", label: "Admitted" }, { value: "reject", label: "Rejected" }, ]; const stateBadgeVariant: Record = { draft: "outline", submit: "secondary", confirm: "default", admission: "default", reject: "destructive", cancel: "destructive", done: "secondary", }; export default function AdmissionList() { const navigate = useNavigate(); const [search, setSearch] = useState(""); const [stateFilter, setStateFilter] = useState("all"); const { data, isLoading } = useQuery({ queryKey: ["admissions", "list", { search, state: stateFilter === "all" ? undefined : stateFilter }], queryFn: () => admissionService.listAdmissions({ search: search || undefined, state: stateFilter === "all" ? undefined : stateFilter, } as Parameters[0]), }); const admissions = data?.items ?? []; if (isLoading) return
; return (

Admissions

View and manage student admission applications.

{STATE_TABS.map(tab => ( ))}
setSearch(e.target.value)} className="pl-9" />
Application # Name Course Register State Date {admissions.map((adm: Admission) => ( navigate(`/admin/admissions/${adm.id}`)}> {adm.application_number} {adm.first_name} {adm.last_name} {adm.course_name} {adm.register_name} {adm.state} {new Date(adm.created_at).toLocaleDateString()} ))} {admissions.length === 0 && ( No admissions found. )}
); }