import {
  BATTLE_STATE_MAP,
  REMATCH_STATE_MAP,
  SCHEDULE_CUSTOM_STATUS_MAP,
  SCHEDULE_STATUS_MAP,
} from '../config';

export function mapBattleStatus(status: any) {
  if (status === BATTLE_STATE_MAP.STARTED_CAN_READY) {
    return '准备中';
  }
  if (status >= BATTLE_STATE_MAP.WAIT_CREATE_ROOM && status <= BATTLE_STATE_MAP.IN_BATTLE) {
    return '对局中';
  }
  if (status >= BATTLE_STATE_MAP.ENDED_READING_DATA && status <= BATTLE_STATE_MAP.ENDED) {
    return '已结束';
  }
  return '未开始';
}

function getBattleStatus(status: any, item: any) {
  if (status === 0
    || ((item?.battle_list?.length === item?.sch_score?.cur_bo)
    && item?.battle_list?.[item?.battle_list?.length - 1]?.battle_state === BATTLE_STATE_MAP.ENDED)
    || item?.battle_list?.length <= 0
  ) {
    return '未开始';
  }
  return mapBattleStatus(status);
}

export function getBattleState(item: any) {
  const { state } = item;
  if ([SCHEDULE_STATUS_MAP.ENDED,
    SCHEDULE_CUSTOM_STATUS_MAP.EMPTY].includes(state)) {
    return '已结束';
  }

  let curBo = 0;
  if (item.sch_score?.cur_bo) {
    curBo = item.sch_score.cur_bo;
  }
  if (item.battle_list) {
    const rNode = item.battle_list.find((item: any) => {
      if (item.bonum === curBo && +item.rematch_state !== REMATCH_STATE_MAP.REMATCH) {
        return true;
      }
    });
    return rNode ? getBattleStatus(rNode.battle_state, item) : '未开始';
  }
  return '未开始';
}
