import { API } from './../../../utils/network/api'
import { getTimeAgo } from './../../../utils/util'
// import TIM from '../../../TUIKit/lib/tim-wx-sdk';
const api = new API()
const app = getApp()
Page({
  data: {
    navbarData: {
      showCapsule: 0, //是否显示左上角图标   1表示显示    0表示不显示
      title: '问诊消息', //导航栏 中间的标题
    },
    height: app.globalData.height, 
    has_data: false,
    data_list_1: [],
    data_list_2: [],
    data_list_3: [],
    data_list_4: [],
    data_list_5: [],
    data_list_5_loading: false,
    static_host: api.getStaticHost(),
    conversationList: [],
    message_inquiry_type: 99999,
    now_message_inquiry_type: 5,
    system_notice_unreadnnum: "",
    service_notice_unreadnnum: "",
    hasOnShow: false,
    show: false,
    show_dialog_from_account: "",
    show_dialog_order_inquiry_id: "",
    show_dialog_inquiry_type: "",
    unreadnnum_inter: 0,
    current_page: 0,
    total: 0,
    per_page: 0,
    last_page: 0,
    dot_1: false,
    dot_2: false,
    dot_3: false,
    dot_4: false,
  },
  onLoad() {
    console.log("wenzhen onloadddd");

    // if(wx.$TUIKit){
    //   wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived, this);
    // }else{
    //   app.imInit().then(res => {
    //     console.log("wenzhen onload imInit");
    //     wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived, this);
    //   });
    // }

    //监听网络状态变化事件
    wx.onNetworkStatusChange(function (res) {
      console.log("onNetworkStatusChange from wenzhen: ")
      console.log(res.isConnected)
      console.log(res.networkType)
      // wx.showToast({
      //   title: '网络类型'+res.networkType,
      // })
    })

  },
  initInterval(){
    let _this = this;
    let usertype =  wx.getStorageSync('usertype');
    let userID = wx.getStorageSync('user_id_'+usertype);
    let unreadnnum_inter = setInterval(() => {
      let system_notice_unreadnnum = wx.getStorageSync(userID+"_system_notice_unreadnnum");
      let service_notice_unreadnnum = wx.getStorageSync(userID+"_service_notice_unreadnnum");
      this.setData({
        system_notice_unreadnnum: system_notice_unreadnnum,
        service_notice_unreadnnum: service_notice_unreadnnum,
      })

      if(_this.data.data_list_1.length > 0 || _this.data.data_list_2.length > 0 || _this.data.data_list_3.length > 0 || _this.data.data_list_4.length > 0 || _this.data.data_list_5.length > 0){
        _this.setData({
          has_data: true
        })
        _this.selectComponent('#tabs').resize();
        let getCurrentName = _this.selectComponent('#tabs').getCurrentName();
        let now_message_inquiry_type = _this.data.now_message_inquiry_type;
        if(getCurrentName != now_message_inquiry_type){
          _this.setData({
            now_message_inquiry_type: getCurrentName
          })
        }
      }
    }, 100);
    this.setData({
      unreadnnum_inter: unreadnnum_inter
    })
    console.log("app.globalData.unreadnnum_inter: ", app.globalData.unreadnnum_inter);
  },
  onShow: function () {
    console.log("onShow from wenzhen V2")
    if(this.data.hasOnShow){
      wx.stopPullDownRefresh()
      return;
    }
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        active: 1  //数字是当前页面在tabbar的索引,如我的查询页索引是2，因此这边为2，同理首页就为0，审批页面为1
      })

        this.getTabBar().startInterval()
    }
    this.getDoctorInquiryFinishMessage();
    this.getDoctorMessageNotice();
    this.getConversationList();
    if(this.data.unreadnnum_inter == 0){
      this.initInterval();
    }
    //避免onshow加载多次
    this.setData({
      hasOnShow: true
    })


    if(wx.$TUIKit){
      wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived, this);
    }else{
      app.imInit().then(res => {
        console.log("wenzhen onload imInit");
        wx.$TUIKit.on(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived, this);
      });
    }
  },
  onHide(){
    console.log("onHideonHide from wenzhen")
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().stopInterval()
    }
    clearInterval(this.data.unreadnnum_inter)
    this.setData({
      hasOnShow: false,
      data_list_1: [],
      data_list_2: [],
      data_list_3: [],
      data_list_4: [],
      data_list_5: [],
      message_inquiry_type: 9999,
      now_message_inquiry_type: 5,
      unreadnnum_inter: 0,
      has_data: false,
      current_page: 0,
      total: 0,
      per_page: 0,
      last_page: 0,
      dot_1: false,
      dot_2: false,
      dot_3: false,
      dot_4: false,
    })
    wx.$TUIKit.off(wx.$TUIKitTIM.EVENT.MESSAGE_RECEIVED, this.$onMessageReceived);
  },
  onUnload(){
    console.log("onUnload from wenzhen")
    this.setData({
      hasOnShow: false,
      message_inquiry_type: 9999,
      now_message_inquiry_type: 5,
    })
  },
  getConversationList(){
    console.log("getConversationListgetConversationListgetConversationList");
    app.imInit().then(res => {
      console.log("wenzhen onload imInit: ", res);
      wx.$TUIKit.getConversationList().then((imResponse) => {
        console.log("imResponse.data.conversationList from wenzhen_v2: ", imResponse.data.conversationList);
        this.setData({
          conversationList: imResponse.data.conversationList,
        });
      }).then(() => {
        console.log("开始查询订单状态")
        this.formatStatus();
      }).catch(error => {
        console.log(error)
      });
    });
  },
  go(e){
    this.setData({
      show: false
    })
    let url = e.currentTarget.dataset.url;
    let name = e.currentTarget.dataset.name;
    wx.setStorageSync(name, 0);
    app.go(url);
  },
  $onMessageReceived(value) {
    const message = value.data[0];
    console.log("message from wenzhen: ",message)
    this.getConversationList();
    // let cloudCustomData = JSON.parse(message.cloudCustomData);
    // let inquiry_type = cloudCustomData.inquiry_type;
    // let order_inquiry_id = cloudCustomData.order_inquiry_id;
    // let type = message.type;
    // let message_txt = "新消息";
    // console.log(type)
    // switch (type) {
    //   case TIM.TYPES.MSG_TEXT:
    //     console.log("文本消息");
    //     message_txt = message.payload.text;
    //     break;
    //   case TIM.TYPES.MSG_IMAGE:
    //     console.log("图片消息");
    //     message_txt = "[图片]";
    //     break;
    //   case TIM.TYPES.MSG_AUDIO:
    //     console.log("音频消息")
    //     message_txt = "[语言]";
    //     break;
    //   case TIM.TYPES.MSG_VIDEO:
    //     console.log("视频消息");
    //     message_txt = "[视频]";
    //     break;
    //   case TIM.TYPES.MSG_FILE:
    //     console.log("文件消息")
    //     message_txt = "[文件]";
    //     break;
    //   case TIM.TYPES.MSG_CUSTOM:
    //     console.log("自定义消息")
    //     break;
    //   case TIM.TYPES.MSG_MERGER:
    //     console.log("合并消息")
    //     break;
    //   case TIM.TYPES.MSG_LOCATION:
    //     console.log("位置消息")
    //     message_txt = "[位置]";
    //     break;
    //   case TIM.TYPES.MSG_FACE:
    //     console.log("表情消息")
    //     message_txt = "[表情]";
    //     break;
    //   default:
    //     break;
    // }
    // let list_name = "data_list_" + inquiry_type;
    // let _index = this.data[list_name].findIndex(item => {
    //   return item.order_inquiry_id == order_inquiry_id;
    // })
    
    // let new_list = [];
    // //没有当前会话
    // if(_index > -1){
    //   let target = list_name + "[" + _index + "].last_message_content.Text";
    //   let target_dot = list_name + "[" + _index + "].message_dot";
    //   console.log("target: ",target);
    //   this.setData({
    //     [target]: message_txt,
    //     [target_dot]: true
    //   })
    //   new_list.push(this.data[list_name][_index]);//先放入目标
    // }else{
    //   let item = {};
    //   item.inquiry_status = message.inquiry_status;
    //   let txt = {};
    //   txt.Text= message_txt;
    //   item.last_message_content = txt;
    //   item.message_send_time = message.message_send_time;
    //   item.message_seq = message.message_seq;
    //   item.message_type = message.message_type;
    //   item.order_inquiry_id = message.order_inquiry_id;
    //   item.patient_age = message.patient_age;
    //   item.patient_name = message.patient_name;
    //   item.patient_sex = message.patient_sex;
    //   item.to_user_id = message.to_user_id;
    //   item.message_dot = true;
    //   new_list.push(item);
    // }
    
    // //置顶
    // this.data[list_name].forEach((item, index) => {
    //   if(index != _index){
    //     new_list.push(item)
    //   }
    // })

    // this.setData({
    //   [list_name]: new_list
    // })

  },
  formatStatus(){
    let order_inquiry_id_list = [];
    order_inquiry_id_list.push("");//初始化一个，防止失败
    this.data.conversationList.forEach(item => {
      let conversationID = item.conversationID;
      if(conversationID == "C2Cadministrator") return;//如果是管理员消息直接跳过
      let lastMessage = item.lastMessage;
      if(!lastMessage) return;
      let cloudCustomData = lastMessage.cloudCustomData;
      if(!cloudCustomData) return;
      let cloudCustomDataJson;
      try {
        cloudCustomDataJson = JSON.parse(cloudCustomData);
      } catch (error) {
        console.log(error);
        return;
      }
      let order_inquiry_id = cloudCustomDataJson.order_inquiry_id;
      order_inquiry_id_list.push(order_inquiry_id);//准备去请求后端那订单状态
    })
    let conversationList =  this.data.conversationList;
    //获取医生问诊消息用户属性
    api.getDoctorInquiryMessageAttr({order_inquiry_ids: order_inquiry_id_list.join(",")}).then(response => {
      let new_conversationList = [];
      if(response.data.length > 0){
        conversationList.forEach(item => {
          let conversationID = item.conversationID;
          if(conversationID == "C2Cadministrator") return;//如果是管理员消息直接跳过
          let lastMessage = item.lastMessage;
          if(!lastMessage) return;
          let cloudCustomData = lastMessage.cloudCustomData;
          if(!cloudCustomData) return;
          let cloudCustomDataJson;
          try {
            cloudCustomDataJson = JSON.parse(item.lastMessage.cloudCustomData);
          } catch (error) {
            return;
          }
          let order_inquiry_id = cloudCustomDataJson.order_inquiry_id;
          let order = response.data.find(attr_item => {
            return attr_item.order_inquiry_id == order_inquiry_id;
          })
          if(!order) return;

          let inquiry_status = order.inquiry_status;
          //inquiry_status 状态
          if(inquiry_status !=3 && inquiry_status != 4){
            return;
          }
          item.inquiry_status = inquiry_status;
          item.patient_age = order.patient_age;
          item.patient_name = order.patient_name;
          item.patient_sex = order.patient_sex;
          new_conversationList.push(item);
        })
      }
      this.setData({
        conversationList: new_conversationList
      })
    }).then(() => {
      console.log("开始格式化formatConversationList")
      this.formatConversationList();
    }).catch(errors => {console.error(errors);})
  },
  formatConversationList(){
    let session_list = [];
    let session_data_list_1 = [];
    let session_data_list_2 = [];
    let session_data_list_3 = [];
    let session_data_list_4 = [];
    let session_data_list_5 = [];
    session_list.push(session_data_list_1);
    session_list.push(session_data_list_2);
    session_list.push(session_data_list_3);
    session_list.push(session_data_list_4);
    session_list.push(session_data_list_5);

    let usertype =  wx.getStorageSync('usertype');
    let userID = wx.getStorageSync('user_id_'+usertype);
    let totalUnreadCount = 0;
    let message_inquiry_type = this.data.message_inquiry_type;

    this.data.conversationList.forEach(item => {
      let conversationID = item.conversationID;
      if(conversationID == "C2Cadministrator") return;//如果是管理员消息直接跳过
      let lastMessage = item.lastMessage;
      let type = lastMessage.type;
      let userProfile = item.userProfile;
      if(!lastMessage) return;
      let cloudCustomData = lastMessage.cloudCustomData;
      if(!cloudCustomData) return;
      let cloudCustomDataJson = JSON.parse(cloudCustomData);
      let order_inquiry_id = cloudCustomDataJson.order_inquiry_id;
      if(!order_inquiry_id) return;
      let inquiry_type = cloudCustomDataJson.inquiry_type;
      if(!inquiry_type) return;
      if(inquiry_type > 4) return;
      if(inquiry_type < message_inquiry_type){
        message_inquiry_type = inquiry_type;
      }
      //去重order_inquiry_id
      let index = this.checkOrderInquiryId(session_list[inquiry_type - 1], order_inquiry_id);
      if(index > -1) return;
      let patient_family_data = cloudCustomDataJson.patient_family_data;
      if(patient_family_data == undefined) return;
      console.log("patient_family_data: ", patient_family_data);
      let session_item = {};
      session_item.inquiry_status = item.inquiry_status;//订单状态暂无
      let txt = {};
      if(lastMessage.messageForShow == "[自定义消息]"){
        let text = "自定义消息";
        let payload = lastMessage.payload;
        if(payload) {
          console.log("payload: ",payload.data);
          let payloadJson = JSON.parse(payload.data);
          text = payloadJson.title.replaceAll(/—/g, "");
        }
        lastMessage.messageForShow = text;
      }
      if(lastMessage.isRevoked){
        if(lastMessage.fromAccount == app.globalData.config.userID){
          lastMessage.messageForShow = "你撤回了一条消息";
        }else{
          lastMessage.messageForShow = "对方撤回了一条消息";
        }
      }
      txt.Text= lastMessage.messageForShow;
      session_item.last_message_content = txt;
      session_item.message_send_time = getTimeAgo(lastMessage.lastTime);
      session_item.message_type = type;
      session_item.order_inquiry_id = order_inquiry_id;
      session_item.inquiry_type = inquiry_type;
      session_item.patient_age = patient_family_data.patient_age;
      session_item.patient_name = patient_family_data.patient_name;
      session_item.patient_sex = patient_family_data.patient_sex;
      session_item.from_account = userProfile.userID;
      let unreadCount = item.unreadCount;
      if(unreadCount > 0){
        totalUnreadCount = totalUnreadCount + unreadCount;
        session_item.message_dot = true;
        let dot_name = "dot_"+inquiry_type
        this.setData({
          [dot_name]: true
        })
      }else{
        if(item.inquiry_status == 3){
          totalUnreadCount = totalUnreadCount + 1;
          session_item.message_dot = true;
          let dot_name = "dot_"+inquiry_type
          this.setData({
            [dot_name]: true
          })
        }else{
          session_item.message_dot = false;
        }
      }
      session_list[inquiry_type - 1].push(session_item);
    })

    
    wx.setStorageSync(userID+'_wenzhen_info', totalUnreadCount);
    

    this.setData({
      data_list_1: session_data_list_1,
      data_list_2: session_data_list_2,
      data_list_3: session_data_list_3,
      data_list_4: session_data_list_4,
      message_inquiry_type: message_inquiry_type
    })
    wx.stopPullDownRefresh()
    // this.selectComponent('#tabs').resize();

  },
  checkOrderInquiryId(list, order_inquiry_id){
    let index = list.findIndex(item => {
      return item.order_inquiry_id == order_inquiry_id;
    })
    return index;
  },
  onTabsChange(e){
    console.log(e);
  },
  goChat(e){
    this.setData({
      show: false
    })

    // console.log("开始订阅消息");
    // wx.requestSubscribeMessage({
    //   tmplIds: ['jhYUf91ULCTX_f69hazqAYwImdFf8ELasRAwB6X-MTM'],
    //   success (res) {
    //     console.log(res);
    //   }
    // })
    let from_account = e.currentTarget.dataset.from_account;
    let order_inquiry_id = e.currentTarget.dataset.order_inquiry_id;
    let inquiry_type = e.currentTarget.dataset.inquiry_type;
    let url = e.currentTarget.dataset.url+"?from_account="+from_account+"&order_inquiry_id="+order_inquiry_id+"&inquiry_type="+inquiry_type;
    app.go(url);
  },
  postDoctorInquiry(e){
    this.setData({
      show: false
    })
    console.log("order_inquiry_id: ", e.currentTarget.dataset.order_inquiry_id);
    let params = {};
    params.order_inquiry_id = e.currentTarget.dataset.order_inquiry_id;
    console.log("params: ",params)
    api.postDoctorInquiry(params).then(response => {
      console.log("开始接诊");
      console.log(response);
    }).then(() => {
      this.goChat(e);
    }).catch(errors => {
      console.error(errors);
    })
  },
  //获取上方角标
  getDoctorMessageNotice(e){
    let usertype = wx.getStorageSync('usertype');
    let userID = wx.getStorageSync('user_id_'+usertype);
    api.getDoctorMessageNotice().then(response => {
      let service_message_notice = response.data.service_message_notice;
      let system_message_notice = response.data.system_message_notice;
      wx.setStorageSync(userID+"_service_notice_unreadnnum", service_message_notice==true?1:"");//3、医生端系统通知
      wx.setStorageSync(userID+"_system_notice_unreadnnum", system_message_notice);//4、医生端服务通知
    }).catch(errors => {
      console.error(errors);
    })
  },
  tabShow(e){
    let show_dialog_from_account = e.currentTarget.dataset.show_dialog_from_account;
    let show_dialog_order_inquiry_id = e.currentTarget.dataset.show_dialog_order_inquiry_id;
    let show_dialog_inquiry_type = e.currentTarget.dataset.show_dialog_inquiry_type;
    console.log("tabShowtabShowtabShowtabShow");
    this.setData({
      show_dialog_from_account: show_dialog_from_account,
      show_dialog_order_inquiry_id: show_dialog_order_inquiry_id,
      show_dialog_inquiry_type: show_dialog_inquiry_type,
      show: true
    })
  },
  onClose(){
    console.log("onCloseonCloseonCloseonClose")
    this.setData({
      show: false
    })
  },
  vanTabsChange(e){
    console.log(e)
    this.setData({
      now_message_inquiry_type: e.detail.name
    })
  },
  onPullDownRefresh(){
    console.log("用户下拉动作")
    this.onHide();
    this.onShow();
  },
  onReachBottom() {
    console.log('===触底了！！===');
    let now_message_inquiry_type = this.data.now_message_inquiry_type;
    if(now_message_inquiry_type == 5){
      if(this.data.current_page < this.data.last_page){//最后一页时停止分页
        this.getDoctorInquiryFinishMessage()
      }
    }
  },
  getDoctorInquiryFinishMessage(){
    let data_list_5 = this.data.data_list_5;
    let params = {};
    params.page = this.data.current_page + 1;
    this.setData({data_list_5_loading: true})
    api.getDoctorInquiryFinishMessage(params).then(response => {
      console.log(response);
      this.setData({
        "data_list_5": data_list_5.concat(response.data.data),
        current_page: response.data.current_page,
        total: response.data.total,
        per_page: response.data.per_page,
        last_page: response.data.last_page
      })
      // this.selectComponent('#tabs').resize();
    }).then(res =>{
      this.setData({ data_list_5_loading: false})
    }).catch(errors => {
      this.setData({ data_list_5_loading: false})
      console.error(errors);
    })
  }
})