import { api } from "@/lib/api-client";
import type {
  GapAnalysis,
  CourseConfig,
  CourseProgress,
  CheckpointResult,
} from "@/types";
import type { ApiSuccessResponse } from "@/types";

export const courseGenerationService = {
  getGapAnalysis: (source: "exam" | "placement", sourceId: number) =>
    api.get<GapAnalysis>("/course/gap-analysis", { source, source_id: sourceId }),

  autoGenerate: (sourceId: number) =>
    api.post<CourseConfig>("/course/auto-generate", { source_id: sourceId }),

  create: (data: Partial<CourseConfig>) =>
    api.post<CourseConfig>("/course/create", data),

  getCourse: (courseId: number) =>
    api.get<CourseConfig>(`/course/${courseId}`),

  updateCourse: (courseId: number, data: Partial<CourseConfig>) =>
    api.put<ApiSuccessResponse>(`/course/${courseId}`, data),

  trackProgress: (courseId: number, data: CourseProgress) =>
    api.post<ApiSuccessResponse>(`/course/${courseId}/progress`, data),

  submitCheckpoint: (courseId: number, data: { module_id: number; answers: Record<string, string> }) =>
    api.post<CheckpointResult>(`/course/${courseId}/checkpoint`, data),

  startPostTest: (courseId: number) =>
    api.post<{ exam_id: number }>(`/course/${courseId}/post-test`),

  generateAIResource: (data: { topic: string; difficulty: string; type: string }) =>
    api.post<{ resource_id: number }>("/ai/generate-resource", data),
};
