"use client";

import { useRouter, useSearchParams } from "next/navigation";
import { useParams } from "@/lib/route-params";
import { useEffect, useState } from "react";
import { AppShell } from "@/components/app/AppShell";
import { Alert } from "@/components/ui/Alert";
import { PageContentSkeleton } from "@/components/ui/Skeleton";
import { ApiError, apiGet, getAcademicYearId } from "@/lib/api";
import { reportCardWorkspaceHref } from "@/lib/report-cards";

export default function LegacyTeacherClassRedirect() {
  const { classId } = useParams<{ classId: string }>();
  const search = useSearchParams();
  const router = useRouter();
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    if (!classId) return;
    (async () => {
      try {
        const params = new URLSearchParams({ class_room_id: classId });
        const yearId = getAcademicYearId();
        if (yearId) params.set("academic_year_id", String(yearId));
        const subject = search.get("subject_id");
        const period = search.get("period_id");
        if (subject) params.set("subject_id", subject);
        if (period) params.set("report_card_period_id", period);
        const payload = await apiGet<{
          selected_period_id?: number | null;
          periods: Array<{ id: number; report_card_id?: number | null }>;
        }>(`/grade-entries/teacher-workspace?${params.toString()}`);
        const selected =
          payload.periods.find((item) => item.id === payload.selected_period_id) ?? payload.periods[0];
        const cardId = selected?.report_card_id;
        if (!cardId) {
          router.replace("/academic/report-cards");
          return;
        }
        router.replace(
          reportCardWorkspaceHref(cardId, "grades", {
            class_id: classId,
            subject_id: subject,
            period_id: period || selected.id,
          }),
        );
      } catch (err) {
        setError(err instanceof ApiError ? err.message : "انتقال به کارنامه ناموفق بود.");
      }
    })();
  }, [classId, router, search]);

  return (
    <AppShell title="کارنامه‌ها">
      {error ? <Alert tone="error">{error}</Alert> : <PageContentSkeleton rows={4} />}
    </AppShell>
  );
}
