/*
 * @Author: wfl
 * @LastEditors: wfl
 * @description:
 * @updateInfo:
 * @Date: 2022-07-29 11:45:13
 * @LastEditTime: 2022-10-11 16:35:24
 */
import { defHttp } from '@/mainApp/utils/http/axios';
import { ApiModel } from '../model/baseModel';
import { getMenuListResultModel } from './model/menuModel';

enum Api {
  GetMenuList = '/server/menu/list/user',
  GetMenuTree = '/server/menu/tree/user',
  UpdateMenu = '/server/menu',
  AddMenu = '/server/menu',
  DeleteMenu = '/server/menu',
  GetAllMenu = '/server/menu/all',
  SortMenu = '/server/menu/drag',
  addTranslateConfig = '/server/i18n',
  getTranslateConfig = '/server/i18n',
}

/**
 * @description: Get user menu based on id
 */

export const getMenuList = (): Promise<
  ApiModel & {
    data: getMenuListResultModel;
  }
> => {
  return defHttp.get({ url: Api.GetMenuList });
};

export const getMenuTree = (): Promise<ApiModel> => {
  return defHttp.get({ url: Api.GetMenuTree });
};

export const updateMenu = (params): Promise<ApiModel> => {
  return defHttp.put({ url: Api.UpdateMenu, params });
};

export const addNewMenu = (params): Promise<ApiModel> => {
  return defHttp.post({ url: Api.AddMenu, params });
};

export const deleteMenu = (menuId): Promise<ApiModel> => {
  return defHttp.delete({ url: `${Api.DeleteMenu}?menuId=${menuId}` });
};

export const getAllMenu = (): Promise<ApiModel> => {
  return defHttp.get({ url: Api.GetAllMenu });
};

export const toSortMenu = (params): Promise<ApiModel> => {
  return defHttp.post({ url: Api.SortMenu, params });
};

export const addTranslateConfig = (params): Promise<ApiModel> => {
  return defHttp.post({ url: Api.addTranslateConfig, params });
};

export const getTranslateConfig = (params?): Promise<ApiModel> => {
  return defHttp.get({ url: Api.getTranslateConfig, params });
};
