var util = require('../../../utils/util.js');
var mall = require('../../../api/mall.js');
var user = require('../../../utils/user.js');

var app = getApp();

Page({
  data: {
    cartGoods: [],
    cartTotal: {
      "goodsCount": 0,
      "goodsAmount": 0.00,
      "checkedGoodsCount": 0,
      "checkedGoodsAmount": 0.00
    },
    isEditCart: false,
    checkedAllStatus: true,
    editCartList: [],
    hasLogin: false
  },
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数

  },
  onReady: function () {
    // 页面渲染完成
  },
  onPullDownRefresh() {
    wx.showNavigationBarLoading() //在标题栏中显示加载
    this.getCartList();
    wx.hideNavigationBarLoading() //完成停止加载
    wx.stopPullDownRefresh() //停止下拉刷新
  },
  goIndex: function () {
    wx.switchTab({
      url: '/pages/index/index',
    })
  },
  onShow: function () {
    console.info(app.globalData.hasLogin)
    let that = this;
    that.getCartList();
    // if (app.globalData.hasLogin) {
    //   that.setData({
    //     hasLogin: app.globalData.hasLogin
    //   });
    //   that.getCartList();
    // } else {
    //   app.checkLoginReadyCallback = res => {
    //     this.setData({
    //       hasLogin: true
    //     });
    //     that.getCartList();
    //   }
    // } 

  },
  onHide: function () {
    // 页面隐藏
  },
  onUnload: function () {
    // 页面关闭
  },
  getPhoneNumber: function (e) {
    let that = this;
    var ivObj = e.detail.iv
    var telObj = e.detail.encryptedData
    let r_userid = wx.getStorageSync('r_userid');
    if (r_userid == null || r_userid == "") r_userid = 0;
    //------执行Login---------
    wx.login({
      success: res => {
        util.request(mall.AuthRegister, {
          code: res.code,
          encryptedData: telObj,
          iv: ivObj,
          r_userid: r_userid
        }).then(function (res) {
          if (res.errno === 0) {
            that.setData({
              hasLogin: true
            });
            //存储用户信息  
            app.globalData.hasLogin = true;
            wx.setStorageSync('userInfo', res.data.userInfo);
            wx.setStorageSync('token', res.data.token);
            wx.showToast({
              title: '授权注册成功',
              icon: 'success',
              duration: 2000
            })
          }
        });
      }
    });

    //-----------------是否授权，授权通过进入主页面，授权拒绝则停留在登陆界面
    if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { //用户点击拒绝 
      wx.showModal({
        title: '警告',
        content: '您点击了拒绝授权，部分功能无法使用!!!',
        showCancel: false,
        confirmText: '确定',
        success: function (res) {
          // 用户没有授权成功，不需要改变 isHide 的值
          if (res.confirm) {
            wx.switchTab({
              url: '/pages/index/index',
            })
          };
        }
      })
    }
  },
  getCartList: function () {
    let that = this;
    util.request(mall.CartList).then(function (res) {
      if (res.errno === 0) {
        that.setData({
          cartGoods: res.data.cartList,
          cartTotal: res.data.cartTotal
        });
        that.setData({
          checkedAllStatus: that.isCheckedAll()
        });
        //显示购物车角标
        if (res.data.cartTotal != null) {
          wx.setStorageSync('cartcount', res.data.cartTotal.goodsCount);
          // user.cartshow();
        }
      }
    });
  },
  isCheckedAll: function () {
    //判断购物车商品已全选
    return this.data.cartGoods.every(function (element, index, array) {
      if (element.checked == true) {
        return true;
      } else {
        return false;
      }
    });
  },
  doCheckedAll: function () {
    let checkedAll = this.isCheckedAll()
    this.setData({
      checkedAllStatus: this.isCheckedAll()
    });
  },
  checkedItem: function (event) {
    let itemIndex = event.target.dataset.itemIndex;
    let that = this;

    let productIds = [];
    productIds.push(that.data.cartGoods[itemIndex].commoditySkuId);
    if (!this.data.isEditCart) {
      util.request(mall.CartChecked, {
        productIds: productIds,
        isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1
      }, 'POST').then(function (res) {
        if (res.errno === 0) {
          that.setData({
            cartGoods: res.data.cartList,
            cartTotal: res.data.cartTotal
          });
        }

        that.setData({
          checkedAllStatus: that.isCheckedAll()
        });
      });
    } else {
      //编辑状态
      let tmpCartData = this.data.cartGoods.map(function (element, index, array) {
        if (index == itemIndex) {
          element.checked = !element.checked;
        }

        return element;
      });

      that.setData({
        cartGoods: tmpCartData,
        checkedAllStatus: that.isCheckedAll(),
        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
      });
    }
  },
  getCheckedGoodsCount: function () {
    let checkedGoodsCount = 0;
    this.data.cartGoods.forEach(function (v) {
      if (v.checked === true) {
        checkedGoodsCount += v.number;
      }
    });
    console.log(checkedGoodsCount);
    return checkedGoodsCount;
  },
  getCheckedGoodsAmount: function () {
    let checkedGoodsAmount = 0;
    this.data.cartGoods.forEach(function (v) {
      if (v.checked === true) {
        checkedGoodsAmount += v.number * v.price;
      }
    });
    return checkedGoodsAmount.toFixed(2);
  },
  checkedAll: function () {
    let that = this;

    if (!this.data.isEditCart) {
      var productIds = this.data.cartGoods.map(function (v) {
        return v.commoditySkuId;
      });
      util.request(mall.CartChecked, {
        productIds: productIds,
        isChecked: that.isCheckedAll() ? 0 : 1
      }, 'POST').then(function (res) {
        if (res.errno === 0) {
          console.log(res.data);
          that.setData({
            cartGoods: res.data.cartList,
            cartTotal: res.data.cartTotal
          });
        }

        that.setData({
          checkedAllStatus: that.isCheckedAll()
        });
      });
    } else {
      //编辑状态
      let checkedAllStatus = that.isCheckedAll();
      let tmpCartData = this.data.cartGoods.map(function (v) {
        v.checked = !checkedAllStatus;
        return v;
      });

      that.setData({
        cartGoods: tmpCartData,
        checkedAllStatus: that.isCheckedAll(),
        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
      });
    }

  },
  editCart: function () {
    var that = this;
    if (this.data.isEditCart) {
      this.getCartList();
      this.setData({
        isEditCart: !this.data.isEditCart
      });
    } else {
      //编辑状态
      let tmpCartList = this.data.cartGoods.map(function (v) {
        v.checked = false;
        return v;
      });
      this.setData({
        editCartList: this.data.cartGoods,
        cartGoods: tmpCartList,
        isEditCart: !this.data.isEditCart,
        checkedAllStatus: that.isCheckedAll(),
        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
      });
    }

  },
  updateCart: function (cartItem,index,number,count) {
    let that = this;

    util.request(mall.CartUpdate, {
      id:cartItem.id,
      commodityId:cartItem.commodityId,
      commoditySkuId:cartItem.commoditySkuId,
      number:number
    }, 'POST').then(res=> {
      console.log(res);
      if(res.errno==0){

        // cartItem.number = number;
        let cartItem = "cartGoods[" + index + "].number";
        this.setData({
          [cartItem]:number,
        });
        console.log(this.cartGoods);
    this.setData({
     
      'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
      'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
    });


        user.cartadd(count);
        that.setData({
          checkedAllStatus: that.isCheckedAll()
        });
      }else{
        util.showErrorToast(res.errmsg);
      }
     
    }).catch(err=>{
      console.log(err);
      util.showErrorToast(err.errno);
    });

  },
  cutNumber: function (event) {
    let that = this;
    let itemIndex = event.target.dataset.itemIndex;
    let cartItem = this.data.cartGoods[itemIndex];
    //删除操作
    if (cartItem.number == 1) {
      wx.showModal({
        title: "提醒",
        content: "确定从购物车删除?",
        success(res) {
          if (res.confirm)
            that.deleteCartGoods(cartItem);
        }
      })
      
    } else {
      let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;
      // cartItem.number = number;
      // this.setData({
      //   cartGoods: this.data.cartGoods,
      //   'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
      //   'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
      // });
      this.updateCart(cartItem,itemIndex,number,-1);
      //显示tab购物车
      // user.cartadd(-1);
    }
  },
  addNumber: function (event) {

    let that = this;
    let itemIndex = event.target.dataset.itemIndex;
    let cartItem = this.data.cartGoods[itemIndex];
    console.log(cartItem);
    if(cartItem.goodsSn=='1036016'){
      wx.showToast({
        title: '此款商品只能购买一个',
        icon: 'none',
        duration: 2000
      });
      var number=1;
    }else{

    var number = cartItem.number + 1;
    //显示tab购物车
    // user.cartadd(1);
  }

  // cartItem.number = number;
  //   this.setData({
  //     cartGoods: this.data.cartGoods,
  //     'cartTotal.checkedGoodsAmount': that.getCheckedGoodsAmount(),
  //     'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()
  //   });
    this.updateCart(cartItem,itemIndex,number,1);
    
  },
  checkoutOrder: function () { //下单
    //获取已选择的商品
    let that = this;

    var checkedGoods = this.data.cartGoods.filter(function (element, index, array) {
      if (element.checked == true) {
        return true;
      } else {
        return false;
      }
    });

    if (checkedGoods.length <= 0) {
      util.showErrorToast('请先选择商品')
      return false;
    }

    // storage中设置了cartId，则是购物车购买
    try {
      wx.setStorageSync('cartId', 0);
      wx.navigateTo({
        url: '/pages/mall/checkout/checkout'
      })
    } catch (e) {}

  },
  deleteCart: function () {
    //获取已选择的商品
    let that = this;

    let productIds = this.data.cartGoods.filter(function (element, index, array) {
      if (element.checked == true) {
        return true;
      } else {
        return false;
      }
    });

    if (productIds.length <= 0) {
      return false;
    }

    productIds = productIds.map(function (element, index, array) {
      if (element.checked == true) {
        return element.productId;
      }
    });
let arr=[];
arr.push(productIds);
console.log(arr);

    util.request(mall.CartDelete, {
      productIds: arr
    }, 'POST').then(function (res) {
      console.log(res);
      if (res.errno === 0) {
        let cartList = res.data.cartList.map(v => {
          v.checked = false;
          return v;
        });

        that.setData({
          cartGoods: cartList,
          cartTotal: res.data.cartTotal
        });
      }

      that.setData({
        checkedAllStatus: that.isCheckedAll()
      });
    });
  },
  deleteCartGoods: function (cartItem) {
    //获取已选择的商品
    let that = this;
    console.log(cartItem);
    util.request(mall.CartDelete, {
      productIds:[cartItem.commoditySkuId],
    }, 'POST').then(function (res) {
      console.log(res.data);
      if (res.errno === 0) {
        let cartList = res.data.cartList.map(v => {
          v.checked = false;
          return v;
        });

        that.setData({
          cartGoods: cartList,
          cartTotal: res.data.cartTotal
        });
        user.cartadd(-1);
        user.cartshow();
      }
      that.setData({
        checkedAllStatus: that.isCheckedAll()
      });
    });
  }
})