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

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

export namespace HrmTransferApi {
  /** 调岗申请 */
  export interface Transfer {
    id?: number;
    employeeId?: number;
    employeeName?: string;
    currentDeptId?: number;
    currentDeptName?: string;
    currentPostId?: number;
    currentPostName?: string;
    targetDeptId?: number;
    targetDeptName?: string;
    targetPostId?: number;
    targetPostName?: string;
    transferType?: number;
    effectiveDate?: string;
    reason?: string;
    fileUrl?: string;
    status?: number;
    processInstanceId?: string;
    remark?: string;
    createTime?: string;
  }
}

/** 查询调岗申请分页列表 */
export function getTransferPage(params: PageParam) {
  return requestClient.get<PageResult<HrmTransferApi.Transfer>>(
    '/hrm/transfer/page',
    { params },
  );
}

/** 查询调岗申请详情 */
export function getTransfer(id: number) {
  return requestClient.get<HrmTransferApi.Transfer>(`/hrm/transfer/get?id=${id}`);
}

/** 新增调岗申请（草稿） */
export function createTransfer(data: HrmTransferApi.Transfer) {
  return requestClient.post('/hrm/transfer/create', data);
}

/** 更新调岗申请 */
export function updateTransfer(data: HrmTransferApi.Transfer) {
  return requestClient.put('/hrm/transfer/update', data);
}

/** 删除调岗申请 */
export function deleteTransfer(id: number) {
  return requestClient.delete(`/hrm/transfer/delete?id=${id}`);
}

/** 提交调岗申请（发起审批） */
export function submitTransfer(id: number) {
  return requestClient.post(`/hrm/transfer/submit?id=${id}`);
}

/** 撤销调岗申请 */
export function cancelTransfer(id: number) {
  return requestClient.post(`/hrm/transfer/cancel?id=${id}`);
}

/** 获取可用流程定义列表 */
export function getTransferApproveProcessDefinitionList() {
  return requestClient.get<any[]>('/hrm/transfer/approve-process-definition-list');
}