import type { PageParam, PageResult } from '#/packages/effects/request/src';

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

export namespace HrmAttendanceRuleApi {
  /** 考勤规则 */
  export interface AttendanceRule {
    id?: number;
    name?: string;
    deptId?: number;
    deptName?: string;
    workStartTime?: string;
    workEndTime?: string;
    lateAllowMinutes?: number;
    earlyAllowMinutes?: number;
    overtimeThreshold?: number;
    status?: number;
    remark?: string;
    createTime?: string;
  }
}

/** 查询考勤规则分页列表 */
export function getAttendanceRulePage(params: PageParam) {
  return requestClient.get<PageResult<HrmAttendanceRuleApi.AttendanceRule>>(
    '/hrm/attendance/rule/page',
    { params },
  );
}

/** 查询考勤规则列表（启用状态） */
export function getAttendanceRuleList() {
  return requestClient.get<HrmAttendanceRuleApi.AttendanceRule[]>(
    '/hrm/attendance/rule/list',
  );
}

/** 查询考勤规则详情 */
export function getAttendanceRule(id: number) {
  return requestClient.get<HrmAttendanceRuleApi.AttendanceRule>(
    `/hrm/attendance/rule/get?id=${id}`,
  );
}

/** 新增考勤规则 */
export function createAttendanceRule(data: HrmAttendanceRuleApi.AttendanceRule) {
  return requestClient.post('/hrm/attendance/rule/create', data);
}

/** 更新考勤规则 */
export function updateAttendanceRule(data: HrmAttendanceRuleApi.AttendanceRule) {
  return requestClient.put('/hrm/attendance/rule/update', data);
}

/** 删除考勤规则 */
export function deleteAttendanceRule(id: number) {
  return requestClient.delete(`/hrm/attendance/rule/delete?id=${id}`);
}

/** 导出考勤规则 Excel */
export function exportAttendanceRule(params: any) {
  return requestClient.download('/hrm/attendance/rule/export-excel', { params });
}