import type { SignModeItem, SignModePageQuery } from '#/views/x/tms/signMode/types';

import { defHttp } from '#/api/request';
import {
  mockDeleteSignMode,
  mockGetSignMode,
  mockQuerySignModes,
  mockSaveSignMode,
  mockSetSignModeEnabled,
} from '#/views/x/tms/signMode/mock';

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

export function getSignModeList(params: SignModePageQuery) {
  if (USE_MOCK) return mockQuerySignModes(params);
  return defHttp.get({ url: `${prefix}/list`, params });
}

export function getSignModeInfo(id: string) {
  if (USE_MOCK) return mockGetSignMode(id);
  return defHttp.get<SignModeItem>({ url: `${prefix}/${id}` });
}

export function createSignMode(data: Partial<SignModeItem>) {
  if (USE_MOCK) return mockSaveSignMode(data);
  return defHttp.post({ url: prefix, data });
}

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

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

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