import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace StudentApi {
      /** 学生联系人信息 */
    export interface StudentContact {
              id: number; // 编号
              studentId?: number; // 学生编号
              name?: string; // 名字
              description?: string; // 简介
              birthday?: string | Dayjs; // 出生日期
              sex?: number; // 性别
              enabled?: boolean; // 是否有效
              avatar?: string; // 头像
              video: string; // 附件
              memo?: string; // 备注
    }

    /** 学生班主任信息 */
    export interface StudentTeacher {
              id: number; // 编号
              studentId?: number; // 学生编号
              name?: string; // 名字
              description?: string; // 简介
              birthday?: string | Dayjs; // 出生日期
              sex?: number; // 性别
              enabled?: boolean; // 是否有效
              avatar?: string; // 头像
              video: string; // 附件
              memo?: string; // 备注
    }

  /** 学生信息 */
  export interface Student {
            id: number; // 编号
            name?: string; // 名字
            description?: string; // 简介
            birthday?: string | Dayjs; // 出生日期
            sex?: number; // 性别
            enabled?: boolean; // 是否有效
            avatar?: string; // 头像
            video?: string; // 附件
            memo?: string; // 备注
                studentcontacts?: StudentContact[]
            studentteacher?: StudentTeacher
  }
}

/** 查询学生分页 */
export function getStudentPage(params: PageParam) {
  return requestClient.get<PageResult<StudentApi.Student>>('/infra/student/page', { params });
}

/** 查询学生详情 */
export function getStudent(id: number) {
  return requestClient.get<StudentApi.Student>(`/infra/student/get?id=${id}`);
}

/** 新增学生 */
export function createStudent(data: StudentApi.Student) {
  return requestClient.post('/infra/student/create', data);
}

/** 修改学生 */
export function updateStudent(data: StudentApi.Student) {
  return requestClient.put('/infra/student/update', data);
}

/** 删除学生 */
export function deleteStudent(id: number) {
  return requestClient.delete(`/infra/student/delete?id=${id}`);
}

/** 批量删除学生 */
export function deleteStudentList(ids: number[]) {
  return requestClient.delete(`/infra/student/delete-list?ids=${ids.join(',')}`)
}

/** 导出学生 */
export function exportStudent(params: any) {
  return requestClient.download('/infra/student/export-excel', { params });
}


// ==================== 子表（学生联系人） ====================

/** 获得学生联系人列表 */
export function getStudentContactListByStudentId(studentId: number) {
  return requestClient.get<StudentApi.StudentContact[]>(`/infra/student/student-contact/list-by-student-id?studentId=${studentId}`);
}

// ==================== 子表（学生班主任） ====================

/** 获得学生班主任 */
export function getStudentTeacherByStudentId(studentId: number) {
  return requestClient.get<StudentApi.StudentTeacher>(`/infra/student/student-teacher/get-by-student-id?studentId=${studentId}`);
}