import { http } from "@/utils/http";
import type { LanguageInfo, TranslationInfo } from "types/system";

/**
 * 添加语言类型参数
 */
type AddLocaleParams = {
  /**编码 */
  code: string;
  /**名称 */
  name: string;
};

/**
 * 添加语言类型
 * @param data
 * @returns
 */
export const postAddLocaleAPI = (data: AddLocaleParams) => {
  return http.request<null>("post", "/api/i18n/addLocale", {
    data
  });
};

/**
 * 删除语言类型
 * @param id
 * @returns
 */
export const deleteLocaleAPI = (id: string) => {
  return http.request<null>("post", `/api/i18n/deleteLocale/${id}`);
};

/**
 * 修改语言类型
 */

export const putUpdateLocaleAPI = (data: AddLocaleParams, id: string) => {
  return http.request<null>("post", `/api/i18n/updateLocale/${id}`, {
    data
  });
};

/**
 * 获取语言类型信息
 */
export const getLocaleInfoAPI = (id: string) => {
  return http.request<LanguageInfo>("get", `/api/i18n/locale/info/${id}`);
};

type GetLoacleListParams = {
  /**页码 */
  page: number;
  /**每页条数 */
  pageSize: number;
  /**语言名称 */
  name?: string;
  /**语言编码 */
  code?: string;
};

export const getLocaleListAPI = (params: GetLoacleListParams) => {
  return http.request<QueryListResult<LanguageInfo>>(
    "get",
    "/api/i18n/locale/list",
    {
      params
    }
  );
};

/**
 * 添加翻译
 */
type AddI18nParams = {
  /**键值 */
  key: string;
  /**翻译内容 */
  translation: string;
  /**语言ID */
  locale_id: string;
};

/**
 * 添加翻译
 * @param data
 * @returns
 */
export const postAddI18nAPI = (data: AddI18nParams) => {
  return http.request<null>("post", "/api/i18n/addI18n", {
    data
  });
};

/**
 * 获取翻译列表参数
 */
type GetI18nListParams = {
  /**页码 */
  page: number;
  /**每页条数 */
  pageSize: number;
  /**语言ID */
  locale_id?: string;
  /**键值 */
  key?: string;
  /**翻译内容 */
  translation?: string;
};

/**
 * 获取翻译列表
 * @param params
 * @returns
 */
export const getI18nListAPI = (params: GetI18nListParams) => {
  return http.request<QueryListResult<TranslationInfo>>(
    "get",
    "/api/i18n/list",
    {
      params
    }
  );
};

/**
 * 获取翻译详情
 */
export const getI18nInfoAPI = (id: string) => {
  return http.request<TranslationInfo>("get", `/api/i18n/info/${id}`);
};

/**
 * 删除翻译
 * @param id
 * @returns
 */
export const deleteI18nAPI = (id: string) => {
  return http.request<null>("post", `/api/i18n/deleteI18n/${id}`);
};
/**
 * 修改翻译
 * @param data
 * @param id
 * @returns
 */
export const putUpdateI18nAPI = (data: AddI18nParams, id: string) => {
  return http.request<null>("post", `/api/i18n/updateI18n/${id}`, {
    data
  });
};

/**
 * 获取国际化处理列表结果
 */
type GetI18nHandleListResult = {
  /**
   * 翻译列表
   */
  data: object;
  /**
   * 名称
   */
  name: string;
  /**
   * 编码
   */
  locale: string;
};

/**
 * 获取国际化处理列表
 * @param id
 * @returns
 */
export const getI18nHandleListAPI = (id: string) => {
  return http.request<GetI18nHandleListResult>(
    "get",
    `/api/i18n/infoList/${id}`
  );
};

/**
 * 获取国际化数据
 * @param locale 语言代码
 * @returns 国际化数据
 */
export const getLocaleI18nAPI = (locale: string) => {
  return http.request<Record<string, any>>("get", `/api/i18n/data/${locale}`);
};
