import { useEffect, useState } from "react";
import { getExams } from "@/_lib/api/exams";
import { ExamType, PaginationMeta } from "@/_types/Types";

export const useExams = (initialPage: number = 1) => {
  const [exams, setExams] = useState<ExamType[]>([]);
  const [pagination, setPagination] = useState<PaginationMeta>({
    current_page: initialPage,
    last_page: 1,
  });
  const [loading, setLoading] = useState<boolean>(true);
  const [error, setError] = useState<string | null>(null);

  const fetchData = async (page: number = 1) => {
    setLoading(true);
    setError(null);
    try {
      const response = await getExams(page);
      console.log("Fetched exams data:", response);
      setExams(response.data.data);
      setPagination({
        current_page: response.data.current_page,
        last_page: response.data.last_page,
      });
    } catch (err: unknown) {
      if (err instanceof Error) {
        setError(err.message);
      } else {
        setError("Unknown error occurred");
      }
    } finally {
      setLoading(false);
    }
  };

  useEffect(() => {
    fetchData(initialPage);
  }, [initialPage]);

  return {
    exams,
    pagination,
    loading,
    error,
    fetchPage: fetchData,
  };
};
