import type {
  EmergencyDrillModel,
  HiddenDangerRegisterModel,
  TaskEventReportModel,
} from './model';

import type { BaseResult } from '#/api/base-result';

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

// API路径常量枚举
enum Api {
  // 应急演练列表
  emergencyDrillList = '/formEmergencyDrill/drill/list',
  hiddenDangerExport = '/formHiddenDangerRegister/register/export',
  hiddenDangerHandle = '/formHiddenDangerRegister/register/handle',
  hiddenDangerList = '/formHiddenDangerRegister/register/list',
  // 隐患台账相关
  hiddenDangerRoot = '/formHiddenDangerRegister/register',
  taskEventReportExport = '/taskEventReport/report/export',
  taskEventReportJudge = '/taskEventReport/report/judge',
  taskEventReportList = '/taskEventReport/report/list',
  taskEventReportReview = '/taskEventReport/report/review',
  // 事件报告相关
  taskEventReportRoot = '/taskEventReport/report',
}

/**
 * 查询应急演练列表
 * @param params 查询参数
 * @returns 应急演练列表
 */
export function getEmergencyDrillList(params: any) {
  return requestClient.get<BaseResult<EmergencyDrillModel[]>>(
    Api.emergencyDrillList,
    {
      params,
    },
  );
}

/**
 * 查询隐患台账列表
 * @param params 查询参数
 * @returns 隐患台账列表
 */
export function getHiddenDangerRegisterList(params: any) {
  return requestClient.get<BaseResult<HiddenDangerRegisterModel[]>>(
    Api.hiddenDangerList,
    {
      params,
    },
  );
}

/**
 * 获取隐患台账详细信息
 * @param id 隐患台账ID
 * @returns 隐患台账详情
 */
export function getHiddenDangerRegisterDetail(id: number | string) {
  return requestClient.get<HiddenDangerRegisterModel>(
    `${Api.hiddenDangerRoot}/${id}`,
  );
}

/**
 * 新增隐患台账
 * @param data 隐患台账数据
 * @returns 操作结果
 */
export function addHiddenDangerRegister(data: HiddenDangerRegisterModel) {
  return requestClient.post(Api.hiddenDangerRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 删除隐患台账
 * @param ids 隐患台账ID数组
 * @returns 操作结果
 */
export function deleteHiddenDangerRegister(ids: (number | string)[]) {
  return requestClient.delete(`${Api.hiddenDangerRoot}/${ids.join(',')}`, {
    successMessageMode: 'message',
  });
}

/**
 * 导出隐患台账列表
 * @param data 导出参数
 * @returns 导出结果
 */
export function exportHiddenDangerRegister(
  data: Partial<HiddenDangerRegisterModel>,
) {
  return commonExport(Api.hiddenDangerExport, data);
}

/**
 * 处理隐患台账
 * @param data 处理数据
 * @returns 操作结果
 */
export function handleHiddenDangerRegister(data: any) {
  return requestClient.put(Api.hiddenDangerHandle, data, {
    successMessageMode: 'message',
  });
}

/**
 * 查询事件报告列表
 * @param params 查询参数
 * @returns 事件报告列表
 */
export function getTaskEventReportList(params: any) {
  return requestClient.get<BaseResult<TaskEventReportModel[]>>(
    Api.taskEventReportList,
    {
      params,
    },
  );
}

/**
 * 获取事件报告详细信息
 * @param id 事件报告ID
 * @returns 事件报告详情
 */
export function getTaskEventReportDetail(id: number | string) {
  return requestClient.get<TaskEventReportModel>(
    `${Api.taskEventReportRoot}/${id}`,
  );
}

/**
 * 新增事件报告
 * @param data 事件报告数据
 * @returns 操作结果
 */
export function addTaskEventReport(data: TaskEventReportModel) {
  return requestClient.post(Api.taskEventReportRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 修改事件报告
 * @param data 事件报告数据
 * @returns 操作结果
 */
export function updateTaskEventReport(data: TaskEventReportModel) {
  return requestClient.put(Api.taskEventReportRoot, data, {
    successMessageMode: 'message',
  });
}

/**
 * 删除事件报告
 * @param ids 事件报告ID数组
 * @returns 操作结果
 */
export function deleteTaskEventReport(ids: (number | string)[]) {
  return requestClient.delete(`${Api.taskEventReportRoot}/${ids.join(',')}`, {
    successMessageMode: 'message',
  });
}

/**
 * 导出事件报告列表
 * @param data 导出参数
 * @returns 导出结果
 */
export function exportTaskEventReport(data: Partial<TaskEventReportModel>) {
  return commonExport(Api.taskEventReportExport, data);
}

/**
 * 事件裁定
 * @param data 裁定数据
 * @returns 操作结果
 */
export function judgeTaskEventReport(data: any) {
  return requestClient.put(Api.taskEventReportJudge, data, {
    successMessageMode: 'message',
  });
}

/**
 * 事件审查
 * @param data 审查数据
 * @returns 操作结果
 */
export function reviewTaskEventReport(data: any) {
  return requestClient.put(Api.taskEventReportReview, data, {
    successMessageMode: 'message',
  });
}
