import BaseStore from '@src/stores/base';

export default class MainStore extends BaseStore {
  courseStruct() {
    return this.getExercise().then((result) => {
      return result.filter(row => row.isCourse);
    });
  }

  dataStruct() {
    return this.getExercise().then((result) => {
      return result.filter(row => row.isData);
    });
  }

  /**
   * 获取首页配置
   */
  getIndex() {
    return this.apiGet('/base/index');
  }

  /**
   * 获取广告列表
   */
  getAd(channel) {
    return this.apiGet('/base/ad', { channel });
  }

  /**
   * 获取优惠信息
   */
  getPromote() {
    return this.apiGet('/base/promote');
  }

  /**
   * 获取微信信息
   */
  getWechat() {
    return this.apiGet('/base/wechat');
  }

  /**
   * 获取对应位置的提示tips
   * @param {*} position
   */
  getTips(position) {
    return this.apiGet('/base/tips', { position });
  }

  /**
   * 获取考分排行信息
   */
  getScore(total, quant) {
    return this.apiGet('/base/score', { total, quant });
  }

  /**
   * 所有练习头2层
   */
  getExercise() {
    return this.getApiCache('API:main:getExercise', () => {
      return this.apiGet('/base/exercise/main');
    }, 3600);
  }

  /**
   * 获取对应节点下的子节点
   * @param {*} id
   * @param {*} children
   */
  getExerciseChildren(id, children) {
    return this.apiGet('/base/exercise/children', { id, children });
  }

  /**
   * 获取对应节点的所有父级节点
   * @param {*} id
   */
  getExerciseParent(id) {
    return this.apiGet('/base/exercise/parent', { id });
  }

  /**
   * 所有模考层级
   */
  getExamination() {
    return this.getApiCache('API:main:getExamination', () => {
      return this.apiGet('/base/examination/main');
    }, 3600);
  }

  /**
   * 获取对应节点下的子节点
   * @param {*} id
   * @param {*} children
   */
  getExaminationChildren(id, children) {
    return this.apiGet('/base/examination/children', { id, children });
  }

  /**
   * 获取对应节点的所有父级节点
   * @param {*} id
   */
  getExaminationParent(id) {
    return this.apiGet('/base/examination/parent', { id });
  }

  /**
   * 获取模考题目数
   */
  getExaminationNumber() {
    return this.getApiCache('API:main:getExaminationNumber', () => {
      return this.apiGet('/base/examination/number');
    }, 3600);
  }

  /**
   * 获取服务信息
   * @param {*} service
   */
  getService(service) {
    return this.apiGet('/base/service', { service });
  }

  getContract(key) {
    return this.apiGet('/base/contract', { key });
  }

  listFaq(page, size, channel, position) {
    return this.apiGet('/base/faq/list', { page, size, channel, position });
  }

  listComment(page, size, channel, position) {
    return this.apiGet('/base/comment/list', { page, size, channel, position });
  }

  readyInfo() {
    return this.apiGet('/base/ready_info');
  }

  listRead(page, size, plate) {
    return this.apiGet('/base/read/list', { page, size, plate });
  }
}

export const Main = new MainStore({ key: 'main' });