"use client" import { useState } from "react" import { useRouter } from "next/navigation" import { toast } from "sonner" import { Button } from "@/shared/components/ui/button" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/shared/components/ui/card" import { Input } from "@/shared/components/ui/input" import { Label } from "@/shared/components/ui/label" import { Textarea } from "@/shared/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/shared/components/ui/select" import { createCoursePlanAction, updateCoursePlanAction } from "../actions" import type { CoursePlanListItem, CoursePlanStatus } from "../types" type Mode = "create" | "edit" interface Option { id: string name: string } export function CoursePlanForm({ mode, plan, classes = [], subjects = [], teachers = [], academicYears = [], backHref, }: { mode: Mode plan?: CoursePlanListItem classes?: Option[] subjects?: Option[] teachers?: Option[] academicYears?: Option[] backHref?: string }) { const router = useRouter() const [isWorking, setIsWorking] = useState(false) const [classId, setClassId] = useState(plan?.classId ?? "") const [subjectId, setSubjectId] = useState(plan?.subjectId ?? "") const [teacherId, setTeacherId] = useState(plan?.teacherId ?? "") const [semester, setSemester] = useState(plan?.semester ?? "1") const [status, setStatus] = useState(plan?.status ?? "planning") const [academicYearId, setAcademicYearId] = useState(plan?.academicYearId ?? "") const handleSubmit = async (formData: FormData) => { setIsWorking(true) try { formData.set("classId", classId) formData.set("subjectId", subjectId) formData.set("teacherId", teacherId) formData.set("semester", semester) formData.set("status", status) if (academicYearId) formData.set("academicYearId", academicYearId) const res = mode === "create" ? await createCoursePlanAction(null, formData) : plan ? await updateCoursePlanAction(plan.id, null, formData) : null if (!res) { toast.error("Invalid form state") return } if (res.success) { toast.success(res.message) const redirectBase = backHref?.includes("/teacher/") ? "/teacher/course-plans" : "/admin/course-plans" router.push(redirectBase) router.refresh() } else { toast.error(res.message || "Failed to save course plan") } } catch { toast.error("Failed to save course plan") } finally { setIsWorking(false) } } return ( {mode === "create" ? "New Course Plan" : "Edit Course Plan"}