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

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

export namespace MesPdTaskApi {
  /** 产品设计任务 */
  export interface Task {
    id?: number;
    code?: string;
    projectId?: number;
    projectCode?: string;
    projectName?: string;
    taskName?: string;
    taskType?: number;
    assigneeId?: number;
    assigneeName?: string;
    assignerId?: number;
    assignerName?: string;
    priority?: number;
    status?: number;
    planFinishDate?: number;
    actualFinishDate?: number;
    remark?: string;
    createTime?: number;
  }

  export interface PageParams extends PageParam {
    code?: string;
    projectId?: number;
    taskName?: string;
    assigneeId?: number;
    status?: number;
  }

  export interface DispatchParams {
    id: number;
    assigneeId: number;
    planFinishDate?: number;
    remark?: string;
  }
}

export function getPdTaskPage(params: MesPdTaskApi.PageParams) {
  return requestClient.get<PageResult<MesPdTaskApi.Task>>(
    '/mes/pd/task/page',
    { params },
  );
}

export function getPdTask(id: number) {
  return requestClient.get<MesPdTaskApi.Task>(`/mes/pd/task/get?id=${id}`);
}

export function createPdTask(data: MesPdTaskApi.Task) {
  return requestClient.post<number>('/mes/pd/task/create', data);
}

export function updatePdTask(data: MesPdTaskApi.Task) {
  return requestClient.put('/mes/pd/task/update', data);
}

export function deletePdTask(id: number) {
  return requestClient.delete(`/mes/pd/task/delete?id=${id}`);
}

export function dispatchPdTask(data: MesPdTaskApi.DispatchParams) {
  return requestClient.put('/mes/pd/task/dispatch', data);
}

export function completePdTask(id: number) {
  return requestClient.put('/mes/pd/task/complete', undefined, {
    params: { id },
  });
}
