import type { EvalModeItem, EvalModePageQuery } from '#/views/x/tms/evalMode/types';

import { defHttp } from '#/api/request';
import {
  mockDeleteEvalMode,
  mockGetEvalMode,
  mockQueryEvalModes,
  mockSaveEvalMode,
  mockSetEvalModeEnabled,
} from '#/views/x/tms/evalMode/mock';

const USE_MOCK = true;
const prefix = '/api/tms/eval-mode';

export function getEvalModeList(params: EvalModePageQuery) {
  if (USE_MOCK) return mockQueryEvalModes(params);
  return defHttp.get({ url: `${prefix}/list`, params });
}

export function getEvalModeInfo(id: string) {
  if (USE_MOCK) return mockGetEvalMode(id);
  return defHttp.get<EvalModeItem>({ url: `${prefix}/${id}` });
}

export function createEvalMode(data: Partial<EvalModeItem>) {
  if (USE_MOCK) return mockSaveEvalMode(data);
  return defHttp.post({ url: prefix, data });
}

export function updateEvalMode(data: Partial<EvalModeItem> & { id: string }) {
  if (USE_MOCK) return mockSaveEvalMode(data);
  return defHttp.put({ url: `${prefix}/${data.id}`, data });
}

export function setEvalModeEnabled(id: string, enabled: '0' | '1') {
  if (USE_MOCK) return mockSetEvalModeEnabled(id, enabled);
  return defHttp.put({ url: `${prefix}/${id}/enabled`, data: { enabled } });
}

export function deleteEvalMode(id: string) {
  if (USE_MOCK) return mockDeleteEvalMode(id);
  return defHttp.delete({ url: `${prefix}/${id}` });
}
