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

export namespace HrmEmployeeScheduleApi {
  /** 排班记录 */
  export interface EmployeeSchedule {
    id?: number;
    employeeId?: number;
    employeeName?: string;
    employeeNo?: string;
    /** 排班日期 yyyy-MM-dd */
    date?: string;
    shiftId?: number;
    shiftName?: string;
    shiftColor?: string;
    remark?: string;
  }

  /** 保存项（整月全量提交，shiftId 为空表示休息/清除） */
  export interface ScheduleItem {
    employeeId: number;
    /** 排班日期 yyyy-MM-dd */
    date: string;
    shiftId?: number | null;
    remark?: string;
  }
}

/** 查询某月排班列表 */
export function getEmployeeScheduleList(params: {
  yearMonth: string;
  deptId?: number;
  employeeId?: number;
}) {
  return requestClient.get<HrmEmployeeScheduleApi.EmployeeSchedule[]>(
    '/hrm/employee-schedule/list',
    { params },
  );
}

/** 批量保存排班（整月覆盖式：有班次 upsert，无班次删除） */
export function saveEmployeeSchedule(data: HrmEmployeeScheduleApi.ScheduleItem[]) {
  return requestClient.post('/hrm/employee-schedule/save', data);
}
