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

export namespace BpmAutoApproveApi {
  /** 流程免审批配置 */
  export interface AutoApproveConfig {
    id: number;
    /** 流程定义的 Key */
    processDefinitionKey: string;
    /** 是否免审批：true-提交后系统自动通过，false-正常人工审批 */
    autoApprove: boolean;
    /** 备注 */
    remark?: string;
    createTime: string;
  }
}

/** 获取全部流程免审批配置 */
export async function getAutoApproveList() {
  return requestClient.get<BpmAutoApproveApi.AutoApproveConfig[]>(
    '/bpm/process-auto-approve/list',
  );
}

/** 获得全局免审批总开关状态 */
export async function getGlobalAutoApprove() {
  return requestClient.get<boolean>('/bpm/process-auto-approve/global');
}

/** 设置全局免审批总开关：开启后所有流程一律免审批 */
export async function updateGlobalAutoApprove(
  autoApprove: boolean,
  remark?: string,
) {
  const params = new URLSearchParams({ autoApprove: String(autoApprove) });
  if (remark) {
    params.append('remark', remark);
  }
  return requestClient.put<boolean>(
    `/bpm/process-auto-approve/update-global?${params.toString()}`,
  );
}

/** 按流程定义的 Key 设置免审批开关（不存在则新增、存在则更新） */
export async function updateAutoApproveByKey(
  processDefinitionKey: string,
  autoApprove: boolean,
  remark?: string,
) {
  const params = new URLSearchParams({
    processDefinitionKey,
    autoApprove: String(autoApprove),
  });
  if (remark) {
    params.append('remark', remark);
  }
  return requestClient.put<boolean>(
    `/bpm/process-auto-approve/update-by-key?${params.toString()}`,
  );
}
