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

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

export namespace MesPdVersionChangeApi {
  /** 版本变更 */
  export interface VersionChange {
    id?: number;
    code?: string;
    projectId?: number;
    projectCode?: string;
    projectName?: string;
    changeType?: number;
    fromVersion?: string;
    toVersion?: string;
    changeReason?: string;
    changeContent?: string;
    applicantId?: number;
    applicantName?: string;
    remark?: string;
    createTime?: number;
  }

  export interface PageParams extends PageParam {
    code?: string;
    projectId?: number;
    changeType?: number;
  }
}

export function getPdVersionChangePage(
  params: MesPdVersionChangeApi.PageParams,
) {
  return requestClient.get<PageResult<MesPdVersionChangeApi.VersionChange>>(
    '/mes/pd/version-change/page',
    { params },
  );
}

export function getPdVersionChange(id: number) {
  return requestClient.get<MesPdVersionChangeApi.VersionChange>(
    `/mes/pd/version-change/get?id=${id}`,
  );
}

export function createPdVersionChange(data: MesPdVersionChangeApi.VersionChange) {
  return requestClient.post<number>('/mes/pd/version-change/create', data);
}

export function updatePdVersionChange(data: MesPdVersionChangeApi.VersionChange) {
  return requestClient.put('/mes/pd/version-change/update', data);
}

export function deletePdVersionChange(id: number) {
  return requestClient.delete(`/mes/pd/version-change/delete?id=${id}`);
}

export function approvePdVersionChange(id: number) {
  return requestClient.put('/mes/pd/version-change/approve', undefined, {
    params: { id },
  });
}
