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

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

export namespace SystemApprovalConfigApi {
  /** 审批配置 */
  export interface ApprovalConfig {
    id?: number; // 主键ID
    bizType?: string; // 业务类型编码
    bizName?: string; // 业务类型名称
    approvalEnabled?: boolean; // 是否启用审批
    userIds?: number[]; // 审批人用户ID列表
    userNames?: string[]; // 审批人姓名列表
    remark?: string; // 备注
    createTime?: Date; // 创建时间
  }
}

/** 查询审批配置分页 */
export function getApprovalConfigPage(params: PageParam) {
  return requestClient.get<PageResult<SystemApprovalConfigApi.ApprovalConfig>>(
    '/system/approval-config/page',
    { params },
  );
}

/** 查询审批配置详情 */
export function getApprovalConfig(id: number) {
  return requestClient.get<SystemApprovalConfigApi.ApprovalConfig>(
    `/system/approval-config/get?id=${id}`,
  );
}

/**
 * 保存审批配置（新增或修改）
 *
 * 审批人为整体覆盖：传入的 userIds 即为最终结果，未传入的会被移除。
 */
export function saveApprovalConfig(
  data: SystemApprovalConfigApi.ApprovalConfig,
) {
  return requestClient.post('/system/approval-config/save', data);
}

/** 删除审批配置 */
export function deleteApprovalConfig(id: number) {
  return requestClient.delete(`/system/approval-config/delete?id=${id}`);
}

/** 查询指定业务类型的审批人编号集合 */
export function getApproverUserIds(bizType: string) {
  return requestClient.get<number[]>('/system/approval-config/approver-ids', {
    params: { bizType },
  });
}

/** 判断当前登录用户是否为指定业务类型的审批人 */
export function isApprover(bizType: string) {
  return requestClient.get<boolean>('/system/approval-config/is-approver', {
    params: { bizType },
  });
}
