var api = require('../../utils/api')
var ble = require('../../services/ble')

Page({
  data: {
    statusBarHeight: 44,
    sessionId: '',
    regions: 0,
    duration: 0,
    avgPd: 0,
    mode: 0,
    durationText: '',
    regionNames: [],
    syncing: false,
    synced: false
  },

  onBack: function () {
    wx.reLaunch({ url: '/pages/index/index' })
  },

  onLoad: function (options) {
    var app = getApp()
    this.setData({ statusBarHeight: app.globalData.statusBarHeight })
    this._deviceId = options.device_id || (app.globalData.currentDevice && app.globalData.currentDevice.device_id) || ble.getDeviceId() || ''
    this._treatment = app.globalData.currentTreatment || {}
    var durationMs = parseInt(options.duration) || 0
    var mins = Math.floor(durationMs / 60000)
    var secs = Math.floor((durationMs % 60000) / 1000)

    this.setData({
      sessionId: options.session_id || '',
      regions: parseInt(options.regions) || 0,
      duration: durationMs,
      avgPd: options.avg_pd || 0,
      durationText: mins > 0 ? mins + '分钟' : secs + '秒',
      mode: parseInt(options.mode) || 0,
      regionNames: ble.getRegionName(parseInt(options.regions) || 0)
    })

    this.syncRecord()
  },

  syncRecord: function () {
    var self = this
    var t = self._treatment
    self.setData({ syncing: true })

    api.syncTreatment({
      session_id: self.data.sessionId,
      device_id: self._deviceId || '',
      start_time: t.start_time || new Date(Date.now() - self.data.duration).toISOString(),
      end_time: t.end_time || new Date().toISOString(),
      regions: self.data.regions,
      total_duration_ms: self.data.duration,
      mode: self.data.mode,
      avg_pd: self.data.avgPd,
      source: t.source || 'device'
    }).then(function () {
      self.setData({ syncing: false, synced: true })
    }).catch(function () {
      self.setData({ syncing: false, synced: false })
    })
  },

  onBackHome: function () {
    wx.switchTab({ url: '/pages/index/index' })
  }
})
