// pages/clock/clock.js
import {
  punchClockNeedInfo,
  savePunchClock
} from '../../services/index.js'
import {
  imgServerUrl
} from '../../config/config.js'
import { transformFromWGSToGCJ } from '../../utils/util'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    approveStatus: false,
    showCover: true,
    imgServerUrl,
    navigation: [
      {
        image: '/images/clock/clock-tongji.png',
        text: '统计'
      },
      {
        image: '/images/clock/clock-rule-icon.png',
        text: '规则'
      },
      {
        image: '/images/clock/clock-kefu.png',
        text: '客服'
      },
    ],
    clockType: 3,
    statusImage: `${imgServerUrl}/images/clock/clock-beyond.png`,
    statusIcon: `${imgServerUrl}/images/clock/clock-waring.png`,
    statusMessage: `请进入企业后再进行打卡`,
    startPunch: "未完成",
    endPunch: '未完成',
    todayMoney: 0,
    sumDuration: 0,
    sumMoney: 0,
    wsPunchClockId: ''
  },
  toRule() {
    wx.navigateTo({
      url: './clock-rule/clock-rule',
    })
  },
  getLocation() {
    return new Promise(reslove => {
      wx.getLocation({
        success: data => {
          const { latitude, longitude } = transformFromWGSToGCJ(data.latitude, data.longitude)
          reslove(Object.assign(data, { latitude, longitude }))
        },
        fail: res => {
          reslove(res)
        }
      })
    })
  },
  location() {
    return new Promise((reslove, reject) => {
      wx.getSetting({
        success: async res => {
          if (res.authSetting['scope.userLocation']) {
            const data = await this.getLocation()
            const info = wx.getSystemInfoSync()
            if (data.errMsg.indexOf('system permission denied') !== -1 || info.locationEnabled === false) {
              wx.showModal({
                content: '无法使用打卡功能',
                title: '微信未开启系统定位功能',
                showCancel: false,
              })
              reject()
            } else {
              console.log(data)
              reslove(data)
            }
          } else {
            wx.authorize({
              scope: 'scope.userLocation',
              success: async () => {
                reslove(await this.getLocation())
              },
              fail: () => {
                wx.showModal({
                  content: '无法使用打卡功能',
                  confirmText: '去授权',
                  title: '位置信息未授权',
                  success: (result) => {
                    if (result.confirm) {
                      wx.openSetting({})
                    } else {
                      this.setData({
                        clockType: 3
                      })
                      reject()
                    }
                  },
                })
              }
            })
          }
        }
      })
    })
  },
  async click() {
    const data = await this.location()
    if (this.data.clockType === 1 && !this.data.wsPunchClockId) {
      this.clock(data.longitude, data.latitude)
      // this.clock(120.353312, 31.535582)
    }
    if (this.data.clockType === 1 && this.data.wsPunchClockId) {
      wx.showModal({
        title: '提示',
        content: '未到下班时间，请刷新页面获取最新状态',
        showCancel: false,
      })
    }
    if (this.data.clockType === 2 && this.data.wsPunchClockId) {
      this.clock(data.longitude, data.latitude)
    }
    if (this.data.clockType === 3) {
      wx.showModal({
        title: '提示',
        content: '超出范围，请刷新页面获取当前位置',
        showCancel: false,
      })
    }
    if (this.data.clockType === 4) {
      wx.showModal({
        title: '提示',
        content: '今日打卡已完成',
        showCancel: false,
      })
    }
  },
  clock(longitude, latitude) {
    savePunchClock({ longitude, latitude, clockType: this.data.clockType, wsPunchClockId: this.data.wsPunchClockId }).then(data => {
      wx.showToast({
        title: '打卡成功',
        success: () => {
          wx.navigateTo({
            url: `./clock-success/clock-success?clockType=${this.data.clockType}&&sumMoney=${data.data.sumMoney}&&duration=${data.data.duration}&&todayMoney=${data.data.todayMoney}`
          })
        }
      })
    }).catch(data => {
      wx.showModal({
        title: '提示',
        content: data.errmsg,
        showCancel: false,
      })
    })
  },
  navigator(e) {
    const { index } = e.currentTarget.dataset
    if (index === 0) {
      wx.navigateTo({
        url: './clock-tongji/index',
      })
    }
    if (index === 1) {
      wx.navigateTo({
        url: './clock-rule/clock-rule',
      })
    }
    if (index === 2) {
      this.changeCoverStatus()
    }
  },
  callKefu() {
    wx.makePhoneCall({
      phoneNumber: '4006920099',
    })
  },
  changeCoverStatus() {
    this.setData({
      showCover: !this.data.showCover
    })
  },
  async load() {
    const data = await this.location()
    console.log(data)
    punchClockNeedInfo({ longitude: data.longitude, latitude: data.latitude }).then(data => {
      // punchClockNeedInfo({ longitude: 120.353312, latitude: 31.535582 }).then(data => {
      let {
        authenticationStatus,
        startPunch,
        endPunch,
        todayMoney,
        clockType, // 1:上班打卡 2：下班打卡 3：超出范围 4：已完成
        sumDuration,
        sumMoney,
        wsPunchClockId,
        dailyAvailableMinHour
      } = data.data
      this.setData({
        approveStatus: authenticationStatus, // 认证状态（0：未认证 1：等待认证 2：未通过 3：已认证） ,
        startPunch,
        endPunch,
        todayMoney,
        clockType,
        sumDuration,
        sumMoney,
        wsPunchClockId
      })
      if (clockType === 1 && !wsPunchClockId) {
        this.setData({
          statusImage: `${imgServerUrl}/images/clock/clock-in.png`,
          statusIcon: `${imgServerUrl}/images/clock/clock-can.png`,
        })
      }
      if (clockType === 1 && wsPunchClockId) {
        this.setData({
          statusImage: `${imgServerUrl}/images/clock/clock-out-disabled.png`,
          statusIcon: `${imgServerUrl}/images/clock/clock-waring.png`,
          statusMessage: `上班${dailyAvailableMinHour}小时候才能进行下班打卡`,
        })
      }
      if (clockType === 2 && wsPunchClockId) {
        this.setData({
          statusImage: `${imgServerUrl}/images/clock/clock-out.png`,
          statusIcon: `${imgServerUrl}/images/clock/clock-can.png`,
          statusMessage: `已进入考勤打卡范围`,
        })
      }
      if (clockType === 3) {
        this.setData({
          statusImage: `${imgServerUrl}/images/clock/clock-beyond.png`,
          statusIcon: `${imgServerUrl}/images/clock/clock-waring.png`,
          statusMessage: `请进入企业后再进行打卡`,
        })
      }
      if (clockType === 4) {
        this.setData({
          statusImage: `${imgServerUrl}/images/clock/clock-done.png`,
          statusIcon: `${imgServerUrl}/images/clock/clock-can.png`,
          statusMessage: `今日打卡已完成`,
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

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

  },

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

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

  },

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

  },

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

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

  },

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

  }
})