import apiClient from './client';
import type {
  Submission,
  ReviewSubmissionRequest,
  ApiResponse,
  PaginatedResponse,
  QueryParams,
  TeacherMyStudentsResponse,
  TeacherReviewResponse,
  TeacherReviewItem,
  TeacherStudentDetailResponse,
} from '@/types';

export const teacherApi = {
  getPendingReviews: async (params?: QueryParams) => {
    const response = await apiClient.get<TeacherReviewResponse>(
      '/submissions/teacher/pending-reviews',
      { params }
    );
    return response.data;
  },

  getReview: async (id: string) => {
    const response = await apiClient.get<ApiResponse<TeacherReviewItem>>(`/submissions/teacher/submissions/${id}`);
    return response.data.data;
  },

  reviewSubmission: async (data: ReviewSubmissionRequest) => {
    const { submissionId, ...payload } = data;
    const response = await apiClient.post<ApiResponse<Submission>>(
      `/submissions/teacher/submissions/${submissionId}/review`,
      payload
    );
    return response.data.data;
  },

  getStudentList: async (params?: QueryParams) => {
    const response = await apiClient.get<ApiResponse<PaginatedResponse<{
      id: string;
      name: string;
      avatar?: string;
      completedVerses: number;
      totalSubmissions: number;
      averageScore: number;
    }>>>('/teacher/students', { params });
    return response.data.data;
  },

  getMyStudents: async (params?: QueryParams) => {
    const response = await apiClient.get<TeacherMyStudentsResponse>(
      '/teachers/my-students',
      { params }
    );
    return response.data;
  },

  getStudentDetail: async (id: string) => {
    const response = await apiClient.get<TeacherStudentDetailResponse>(`/teachers/my-students/${id}`);
    return response.data.data;
  },
};
