import type { Dayjs } from 'dayjs';

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

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

export namespace ProjectApi {
  /** 项目信息 */
  export interface Project {
    id: number; // 主键
    customerId?: number; // 客户ID
    name?: string; // 项目名称
    code?: string; // 项目编号
    contractCode?: string; // 合同编号
    businessStatus: number; // 商务状态
    businessOwner?: number; // 业务负责人
    projectOwner?: number; // 项目对接人
    technicalOwnerA?: number; // 技术负责人1
    technicalOwnerB: number; // 技术负责人2
    technicalOwnerC: number; // 技术负责人3
    startTime: Dayjs | string; // 项目开始时间
    endTime: Dayjs | string; // 项目结束时间
    status?: number; // 项目状态
    envInfo: number; // 环境信息
    operatingSystem: number; // 操作系统
    softwareVersion: number; // 软件版本信息
    remark: string; // 备注
    serialNo?: string; // 序列号
  }
}

/** 查询项目分页 */
export function getProjectPage(params: PageParam) {
  return requestClient.get<PageResult<ProjectApi.Project>>(
    '/license/project/page',
    { params },
  );
}

/** 查询项目列表 */
export function getProjectList(params: any) {
  return requestClient.get<ProjectApi.Project[]>('/license/project/list', {
    params,
  });
}

/** 查询可选择的项目列表 */
export function getLicenseProjectList(params: any) {
  return requestClient.get<ProjectApi.Project[]>(
    '/license/project/license-list',
    {
      params,
    },
  );
}

/** 查询项目详情 */
export function getProject(id: number) {
  return requestClient.get<ProjectApi.Project>(`/license/project/get?id=${id}`);
}

/** 新增项目 */
export function createProject(data: ProjectApi.Project) {
  return requestClient.post('/license/project/create', data);
}

/** 修改项目 */
export function updateProject(data: ProjectApi.Project) {
  return requestClient.put('/license/project/update', data);
}

/** 删除项目 */
export function deleteProject(id: number) {
  return requestClient.delete(`/license/project/delete?id=${id}`);
}

/** 导出项目 */
export function exportProject(params: any) {
  return requestClient.download('/license/project/export-excel', params);
}

/** 下载导入模板 */
export function importTemplate() {
  return requestClient.download('/license/project/get-import-template');
}

/** 导入项目 */
export function importProject(file: File, updateSupport: boolean) {
  return requestClient.upload('/license/project/import', {
    file,
    updateSupport,
  });
}

/** 项目名称是否唯一 */
export async function isProjectNameUnique(
  name: string,
  id?: ProjectApi.Project['id'],
) {
  return requestClient.get<boolean>('/license/project/name-unique', {
    params: { id, name },
  });
}

/** 项目编号是否唯一 */
export async function isProjectCodeUnique(
  code: number,
  id?: ProjectApi.Project['id'],
) {
  return requestClient.get<boolean>('/license/project/code-unique', {
    params: { id, code },
  });
}

/** 查询当前最大sn */
export async function getMaxSn() {
  return requestClient.get<boolean>('/license/project/max-sn');
}
