import { locales } from '@pisell/utils';

/**
 * 格式化数据为可用和不可用两组
 * @param dataList 数据列表
 * @returns [available, unavailable] 格式化后的数据
 */
export var formatDataToGroups = function formatDataToGroups(dataList) {
  var available = {
    title: locales.getText('page.wallet.available'),
    dataSource: dataList.filter(function (item) {
      return item.limit_status === 'enable';
    })
  };
  var unavailable = {
    title: locales.getText('page.wallet.unavailable'),
    dataSource: dataList.filter(function (item) {
      return item.limit_status === 'disable';
    })
  };
  return [available, unavailable];
};

/**
 * 计算可用卡片总余额
 * @param dataList 数据列表
 * @param valueField 值字段名，默认为balance
 * @returns number 总余额
 */
export var calculateTotalValue = function calculateTotalValue(dataList) {
  var valueField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'balance';
  var enabledCards = dataList.filter(function (item) {
    return item.limit_status === 'enable' && item.tag !== 'good_pass';
  });
  return enabledCards.reduce(function (sum, item) {
    return sum + Number(item[valueField] || 0);
  }, 0);
};

/**
 * 检查是否存在可用卡片
 * @param dataList 数据列表
 * @returns boolean 是否有可用卡片
 */
export var hasAvailableCards = function hasAvailableCards(dataList) {
  return dataList.some(function (item) {
    return item.limit_status === 'enable';
  });
};

/**
 * 查找卡片详情
 * @param dataList 数据列表
 * @param id 卡片ID
 * @returns 卡片详情或undefined
 */
export var findCardById = function findCardById(dataList, id) {
  if (!id) return undefined;
  return dataList.find(function (item) {
    return item.id === id;
  });
};

/**
 * 创建状态转换对象
 * @param translations 转换映射
 * @returns 转换对象
 */
export var createStatusMap = function createStatusMap(translations) {
  return function (status) {
    return translations[status] || status;
  };
};