// pages/index/index.js
const app = getApp()
const util = require("../../utils/util")
const urlDef = require("../../utils/urls")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    array: ['艾克斯郎校区1', '艾克斯郎校区2', '艾克斯郎校区3', '艾克斯郎校区4'],
    index: 0,
    curStu: {},
    classList: [
      { img: '/images/kc.png', title: '今日课程', num: '0', url: "/pages/schedule/schedule" },
      { img: '/images/jtzy.png', title: '今日作业', num: '0' },
      { img: '/images/cq.png', title: '出勤率', num: '0%' },
    ],
    appList: [
      { img: '/images/kb.png', title: '我的课表',url:"/pages/schedule/schedule" },
      { img: '/images/zy.png', title: '提交作业',url:"/pages/task/task" },
      { img: '/images/dp.png', title: '课堂点评' },
      { img: '/images/zj.png', title: '成长足迹' },
      { img: '/images/qj.png', title: '请假',url:"/pages/leave/leave" },
      { img: '/images/bk.png', title: '补课',url:"/pages/lessons/lessons" },
      { img: '/images/jk.png', title: '加课' ,url: "/pages/addClass/addClass"},
      { img: '/images/dk.png', title: '调课' },
    ],
    bannerList: [],
    userList: [],
    userItems: [],
    orgItems: [],
    stuShowList: [],
    teaShowList: [],
  },

  //切换身份
  changeStu: function (e) {
    let sid = e.currentTarget.dataset.id;
    this.doChangeUser(sid);
  },
  doChangeUser: function (sid) {
    if (this.data.curStu.studentId == sid) {
      console.log('无须切换')
      return;
    }
    wx.showLoading({
      title: '正在切换用户',
      mask: true
    })
    console.log('切换用户 : ' + sid);
    const urls = urlDef.urls;
    util.apiPost(urls.change_user, { targetId: sid }).then(rs => {
      wx.hideLoading();
      if (rs === 1) {
        console.log('切换成功');
        this.loadIndexData();
      } else {
        wx.showToast({
          title: '切换失败,请稍后重试',
          icon: 'none'
        })
      }
    });
  },

  //切换校区
  bindPickerChange: function (e) {
    let i = e.detail.value;
    if (i == this.data.index) {
      console.log('无须切换...');
      return;
    }

    // 取该校区 第1位学生 作为默认登录用户
    let targetId = this.data.orgItems[i].orgId;
    console.log('切换校区 ' + targetId);
    this.data.userItems.some(u => {
      console.log('用户: ' + JSON.stringify(u));
      if (u.orgId === targetId) {
        this.doChangeUser(u.studentId);
        this.setData({
          index: i
        });
        return true;
      }
    });
  },

  toPage: function (e) {
    if(typeof e.currentTarget.dataset.url == 'undefined'){
      return
    }
    wx.navigateTo({
      url: e.currentTarget.dataset.url,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.loadIndexData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  strLen(s) {
    return (s ? s.length : 0)
  },
  loadVideoInfo: function (videos, personType) {
    let urls = urlDef.urls
    videos.forEach(v => {
      util.apiPost(urls.video_loadInfo + v.videoId).then((rs) => {
        v.imgUrl = rs.img
        v.playUrl = rs.url
        if (personType == 0) {
          this.setData({ 'stuShowList': videos })
        }
        if (personType == 1) {
          this.setData({ 'teaShowList': videos })
        }
      });
    });
  },
  queryVideoShow: function (personType) {
    const urls = urlDef.urls;
    //获取登录用户数据, 并加载首页数据
    util.apiPost(urls.person_video_list, { 'q.orgId': this.data.curStu.orgId, 'q.doPersonId': this.data.curStu.studentId, 'q.personType': personType, 'q.sortBy': 'rand', 'q.limit4': 'true' }).then(rs => {
      this.loadVideoInfo(rs, personType)
    })
  },
  queryStudentShow: function () {
    this.queryVideoShow(0)
  },
  queryTeacherShow: function () {
    this.queryVideoShow(1)
  },
  loadIndexData: function () {
    const urls = urlDef.urls;
    //获取登录用户数据, 并加载首页数据
    util.apiPost(urls.get_cur_user, {}).then(rs => {
      // console.log(JSON.stringify(rs));
      let userItems = rs.attr.others
      let orgItems = []
      userItems.forEach(u => {
        let exists = false;
        orgItems.some(o => {
          if (o.orgId === u.orgId) {
            exists = true;
            return true;
          }
        })
        if (!exists) {
          orgItems.push({ orgId: u.orgId, orgName: u.orgName })
        }
        if (u.id === rs.id) { // 当前用户
          let student = { studentId: u.studentId, orgId: u.orgId }
          this.setData({ 'curStu': student })
          // 放入 strong中
          wx.setStorageSync('student', student);
        }
        if (this.strLen(u.imageUrl) === 0) {
          u.imageUrl = '/images/head.png'
        } else {
          u.imageUrl = urls.oss_file + 'image/' + u.imageUrl
        }
      })

      this.setData({ 'userItems': userItems, 'orgItems': orgItems })


      let personId = rs.attr.personId
      let orgId = rs.attr.orgId
      let today = util.curTime().substring(0, 10).replace(/\//g, '-')

      // banner 图片
      util.apiPost(urls.get_advert, { '&q.use': 1, 'q.orgId': orgId, 'q.exceptStatus': 2 }).then(r => {
        // console.log('banner : ' + JSON.stringify(r));
        this.setData({ 'bannerList': r })
      });

      // 今日课程
      util.apiPost(urls.leave_get_classes_date, { 'q.studentId': personId, 'q.attenceDate': today }).then(r => {
        // console.log('今日课程 : ' + JSON.stringify(r));
        this.setData({ 'classList[0].num': (r ? r.length : 0) })
      })

      // 作业未提交
      util.apiPost(urls.my_homework, { 'q.studentId': personId, 'q.status': 0 }).then(r => {
        // console.log('作业未提交 : ' + JSON.stringify(r));
        this.setData({ 'classList[1].num': (r ? r.length : 0) })
      });

      // 出勤率
      util.apiPost(urls.get_attendance_rate, { 'q.studentId': personId }).then(r => {
        // console.log('出勤率 : ' + JSON.stringify(r));
        let attendRate = 0, alreadyCount = 0, shouldCount = 0;
        if (r != null) {
          r.forEach(it => {
            if (it.isAttend === '1') {
              alreadyCount = it.num
            } else if (it.isAttend === '0') {
              shouldCount = it.num
            }
          });
        }
        let t = (alreadyCount + shouldCount)
        if (t > 0) {
          attendRate = alreadyCount * 100 / t
        }
        this.setData({ 'classList[2].num': attendRate.toFixed(2) + '%' })
      })
      this.queryVideoShow(0)
      this.queryVideoShow(1)
    });
  },
  doThumbsUp: function (o) {
    const urls = urlDef.urls;
    let pid = this.data.curStu.studentId;
    let pt = o.detail.personType;
    let vid = o.detail.videoId;
    let entity = { videoId: vid, personId: pid, personType: pt, actionType: 1 };
    util.apiPost(urls.person_video_view_save, entity, 'application/json').then(rs => {
      if (pt == 0) {
        this.data.stuShowList.map(o => {
          if (o.videoId == vid) {
            o.goodCount += 1
          }
        })
        this.setData({ 'stuShowList': this.data.stuShowList })
      }
      if (pt == 1) {
        this.data.teaShowList.map(o => {
          if (o.videoId == vid) {
            o.goodCount += 1
          }
        })
        this.setData({ 'teaShowList': this.data.teaShowList })
      }
    }).catch(e => {
      console.log(e);
    })
  }
})