import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';

/**
 * 查询网元列表
 * @param query 查询参数
 * @returns object
 */
export function listNeInfo(query: Record<string, any>) {
  return request({
    url: '/ne/info/list',
    method: 'get',
    params: query,
    timeout: 60_000,
  });
}

/**
 * 查询网元信息详细
 * @param infoId 信息ID
 * @returns object
 */
export function getNeInfo(infoId: string | number) {
  return request({
    url: `/ne/info/${infoId}`,
    method: 'get',
  });
}

/**
 * 网元信息新增
 * @param data 网元对象
 * @returns object
 */
export function addNeInfo(data: Record<string, any>) {
  return request({
    url: `/ne/info`,
    method: 'post',
    data: data,
    crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
    timeout: 30_000,
  });
}

/**
 * 网元信息修改
 * @param data 网元对象
 * @returns object
 */
export function updateNeInfo(data: Record<string, any>) {
  return request({
    url: `/ne/info`,
    method: 'put',
    data: data,
    crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
    timeout: 30_000,
  });
}

/**
 * 网元信息删除
 * @param id 信息ID
 * @returns object
 */
export function delNeInfo(infoIds: string | number) {
  return request({
    url: `/ne/info/${infoIds}`,
    method: 'delete',
    timeout: 60_000,
  });
}

/**
 * 查询网元列表全部无分页
 * @param query 查询参数 neType neId bandStatus bandHost
 * @returns object
 */
export function listAllNeInfo(query: Record<string, any>) {
  return request({
    url: '/ne/info/listAll',
    method: 'get',
    params: query,
    timeout: 60_000,
  });
}

/**
 * 查询网元状态
 * @param neType 网元类型
 * @param neId 网元ID
 * @returns object
 */
export function stateNeInfo(neType: string, neId: string) {
  return request({
    url: '/ne/info/state',
    method: 'get',
    params: { neType, neId },
  });
}

/**
 * 查询网元信息
 * @param neType 网元类型
 * @param neId 网元ID
 * @returns object
 */
export function getNeInfoByTypeAndID(neType: string, neId: string) {
  return request({
    url: '/ne/info/byTypeAndID',
    method: 'get',
    params: { neType, neId },
  });
}

/**
 * 网元端OAM配置文件读取
 * @param neType 网元类型
 * @param neId 网元ID
 * @returns object
 */
export function getOAMFile(neType: string, neId: string) {
  return request({
    url: '/ne/info/oamFile',
    method: 'get',
    params: { neType, neId },
  });
}

/**
 * 网元端配置文件写入
 * @param neType 网元类型
 * @param neId 网元ID
 * @param content 用json对象
 * @param sync  同步到网元
 * @returns object
 */
export function saveOAMFile(data: Record<string, any>) {
  return request({
    url: `/ne/info/oamFile`,
    method: 'put',
    data: data,
    timeout: 60_000,
  });
}

/**
 * 网元端公共配置文件读取
 * @returns object
 */
export function getPara5GFilee() {
  return request({
    url: '/ne/info/para5GFile',
    method: 'get',
  });
}

/**
 * 网元端公共配置文件写入
 * @param content txt内容为字符串 其他文件格式都用json对象
 * @param syncNe  同步到网元端 NeType@ NeId
 * @returns object
 */
export function savePara5GFile(data: Record<string, any>) {
  return request({
    url: `/ne/info/para5GFile`,
    method: 'put',
    data: data,
    timeout: 60_000,
  });
}

/**
 * 网元服务操作
 * @param data 对象 {neType,neId,action}
 * @returns object
 */
export function serviceNeAction(data: Record<string, any>) {
  return request({
    url: `/ne/action/service`,
    method: 'put',
    data: data,
    timeout: 60_000,
  });
}
