/**
* v_index.js
* Version: 0.1
* User: wy
* Date: 2017-09-06
* Copyright(c)  2017. U-GEN Tech.Co,Ltd. All Rights Reserved.
* 主控页面
*/
import moment from 'moment';
import config from '../../public/config.js';
import {iot, uPublic, uComponents} from '../../public/public.js';

iot.ready(init);
function init() {
    //通用 图片轮播、跑马灯、开关、按钮、dialog、loading组件
    uPublic.componentsInit(['u-carousel','u-marquee','u-switch','u-button','u-dialog','u-loading']);
    const app = new Vue({
        data:{ 
            //开门记录
            valueOpendoorRecord: 0,
            //安全报警
            valueSecurityAlarm: 0,
            //门锁用户
            valueDoorlockUser: 0,
            //远程开门
            valueRemoteOpendoor: 0,
            //劫持报警
            valueHijackAlarm: 0,
            //门锁管理
            valueDoorlockManage: 0,
            activeFlag: true,
            followShowFlag: false,
            doorbellShowFlag: true,
            bindDoorlockShowFlag: false,
            //配置组件
            componentsConfig: initComponentsConfig(),
            //电量
            batteryState: null,
            //电量百分比
            batteryPercent: 100,
            //响铃时间
            ringingTime: null,
            //门铃是否响起
            doorbellRingingFlag: false,
            //是否显示"门铃响了"文本
            textDoorbellRingingFlag: false,
            //远程开门是否开启
            remoteOpendoorFlag: false,
            //设备ID
            deviceId: null,
            //设备uuid
            uuid: null,
            //最新消息
            newMsg: null,
            //是否第一次获取门锁信息
            isFirstGetLockInfo: true,
            lockId: null,
            //获取用户的身份
            role: null
        },
        mounted(){
        	let self = this;
        	iot.navigator.closeAllBesidesItself();
        	//获取设备信息
        	iot.business.sds.getDevicesByUser({
			    success: (response) => {
			    	console.log(response);
			    	let data = uPublic.checkResponseData(response.data);
					if(response.data == 'success'){
						setValueOfSwitch(self, 0);
					}else if(data){
						self.deviceId = data[0].sn;
						self.uuid = data[0].uuid;
						getLockInfo(self);
					}
			    },
			    error: (error) => {}
			});
			
			//注册监听上报
			iot.business.sds.registerPushListener({
			    success: (response) => {
			    	console.log(response);
		    		let data = response.data;
		    		console.log(data);
//		    		if(data.hasOwnProperty('params')){
						console.log("registerPushListener");
		    			setDevceInfo(self, data.params.data);
//		    		}
			    },
			    error: (error) => {
			    	console.log(error);
			    	uPublic.openRequestErrorAlert(self);
			    }
			});
			
			notificationListener();
			
        },
        methods:{
            getValueOpendoorRecord(){
                return this.valueOpendoorRecord;
            },
            setValueOpendoorRecord(value){
                this.valueOpendoorRecord = value;
            },
            getValueSecurityAlarm(){
                return this.valueSecurityAlarm;
            },
            setValueSecurityAlarm(value){
                this.valueSecurityAlarm = value;
            },
            getValueRemoteOpendoor(){
                return this.valueRemoteOpendoor;
            },
            setValueRemoteOpendoor(value){
                this.valueRemoteOpendoor = value;
            },
            getValueHijackAlarm(){
                return this.valueHijackAlarm;
            },
            setValueHijackAlarm(value){
                this.valueHijackAlarm = value;
            }, 
            getValueDoorlockUser(){
            	return this.valueDoorlockUser;
            },
            setValueDoorlockUser(value){
            	this.valueDoorlockUser = value;
            },
            getValueDoorlockManage(){
            	return this.valueDoorlockManage;
            },
            setValueDoorlockManage(value){
            	this.valueDoorlockManage = value;
            },
            getFollowShowFlag(){
                return this.followShowFlag;
            },
            setFollowShowFlag(boolean){
                this.followShowFlag = boolean;
            },       
            getBatteryState(){
            	return this.batteryState();
            },
            setBatteryState(number){
            	this.batteryState = number
            },
            getBatteryPercent(){
            	return this.batteryPercent;
            },
            setBatteryPercent(percent){
            	this.batteryPercent = percent;
            },
            getRingingTime(){
            	return this.ringingTime;
            },
            setRingingTime(time){
            	this.ringingTime = time
            },
            getDoorbellRingingFlag(){
            	return this.doorbellRingingFlag;
            },
            setDoorbellRingingFlag(boolean){
            	this.doorbellRingingFlag = boolean;
            },
            getTextDoorbellRingingFlag(){
            	return this.textDoorbellRingingFlag;
            },
            setTextDoorbellRingingFlag(flag){
            	this.textDoorbellRingingFlag = flag;
            },
            getRemoteOpendoorFlag(){
            	return this.remoteOpendoorFlag;
            },
            setRemoteOpendoorFlag(flag){
            	this.remoteOpendoorFlag = flag;
            },
            getUuid(){
            	return this.uuid;
            },
            setUuid(){
            	this.uuid = id;
            },
            getIsFirstGetLockInfo(){
            	return this.isFirstGetLockInfo;
            },
            setIsFirstGetLockInfo(flag){
            	this.isFirstGetLockInfo = flag
            },
            getLockId(){
            	return this.lockId;
            },
            setLockId(id){
            	this.lockId = id;
            },
            getRole(){
            	return this.role;
            },
            setRole(bool){
            	this.role = bool;
            },
            //tap 个人信息
            onMyInfoTap(){
            	myInfoTap(this);
            },
            //tap 绑定门锁
            onBindDoorlockTap(){
            	bindDoorlockTap();
            },
            //tap 门锁管理
            onDoorlockManageTap(){
                doorlockManageTap(this);
            },
            //tap 开门记录
            onOpendoorRecordTap(){
                opendoorRecordTap(this);
            }, 
            //tap 安全报警
            onSecurityAlarmTap(){
                securityAlarmTap(this);
            },
            //tap 门锁用户
            onDoorlockUserTap(){
                doorlockUserTap(this);
            },
            //tap 远程开门
            onRemoteOpendoorTap(){
                remoteOpendoorTap(this);
            },
            //tap 劫持报警
            onHijackAlarmTap(){
                hijackAlarmTap(this);
            },
            //tap 保存二维码到相册
            onSaveQRcodeButtonTap(){
                saveQRcodeButtonTap();
            },
            //tap 稍后关注
            onLaterFollowTap(){
                laterFollowTap(this);
            }                      
        }   
    }).$mount('#app');
}

//配置组件参数
function initComponentsConfig() {   
    return {
        //图片轮播
        carousel: {
            initParam: {
                class:'custom-carousel',
                list:  [{image: '../../resources/image/image1.png'},
                        {image: '../../resources/image/image2.png'},
                        {image: '../../resources/image/image3.png'}],
                auto: true,
                autoTime: 2000,
                loop: true
            }
        },
        marquee: {
            initParam: {
                class: "custom-marquee",
                text: Vue.t('device.defaultNewMsg')
            }
        },
        //开门记录switch 参数
        opendoorRecordSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.opendoorRecord'),
                autoChange: false
            }
        },
        //安全报警switch 参数
        securityAlarmSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.securityAlarm'),
                autoChange: false
            }
        },
        doorlockUserSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.doorlockUser'),
                autoChange: false
            }
        },
        //远程开门switch 参数
        remoteOpendoorSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.remoteOpendoor'),
                autoChange: false
            }
        },
        //劫持报警switch 参数
        hijackAlarmSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.hijackAlarm'),
                autoChange: false
            }
        },
        doorlockManageSwitch: {
            initParam: {
                class: 'custom-switch',
                text: Vue.t('device.doorlockManage'),
                autoChange: false
            }
        },
        //确定 button 参数
        saveQRcodeButton: {   
            initParam: {
                class: 'custom-button',
                text: Vue.t('btn.saveQRcode')
            }
        },
        dialog: {
            initParam: {
                class: 'custom-dialog'
            }
        },
        loading: {
            initParam: {
                class: 'custom-loading'
            }
        }                
    }
}

function setValueOfSwitch(self, flag){
	self.setValueOpendoorRecord(flag);
	self.setValueSecurityAlarm(flag);
	self.setValueRemoteOpendoor(flag);
	self.setValueHijackAlarm(flag);
	self.setValueDoorlockUser(flag);
	self.setValueDoorlockManage(flag);
}

function getDeviceStatus(self){
	iot.business.sds.getDeviceStatus({
	    data: {
	        uuid: self.uuid
	    },
	    success: (response) => {
	    	console.log(response);
	    	let data = response.data;
			self.setBatteryPercent(data.BatteryPercentage.value);
			self.setBatteryState(config.powerIcon[Math.round(data.BatteryPercentage.value/20)]);
			console.log("getStatus");
			setDevceInfo(self, data);
	    },
	    error: (error) => {
	    	console.log(error);
	    	uPublic.openRequestErrorAlert(self);
	    }
	});
}

function getLockInfo(self){
	console.log("getLockInfo");
	iot.business.api.sendCustom('lock/getLockInfo',{
		data: {
//			device_id:"600194283588"
			device_id: self.deviceId
		},
		success: (response) => {
			console.log(response);
			let data = uPublic.checkResponseData(response.data);
			if(data){
//				self.setBatteryPercent(data.battery);
//				self.setBatteryState(config.powerIcon[Math.round(data.battery/20)]);
				//判断云端是否绑定
				if(data.lock_id){
					setValueOfSwitch(self, 1);
					self.setLockId(data.lock_id);
					self.setRole(data.role);
					console.log(data.info);
					if(self.isFirstGetLockInfo){
						getDeviceStatus(self);
						self.setIsFirstGetLockInfo(false);
					}
					if(data.info && data.info.length){
						self.newMsg = moment(data.info[0].time).format("YY.MM.DD  HH:mm") + data.info[0].nickname + Vue.t('opendoorRecord.'+config.openDoorMode[data.info[0].mode]+'');
						uComponents.changeMarqueeText(self, self.newMsg);
					}else{
						uComponents.changeMarqueeText(self, Vue.t('device.noNewMsg'));
						self.setRingingTime(null);
					}
				}else{
					uComponents.changeMarqueeText(self, Vue.t('device.defaultNewMsg'));
				}
			}else{
//				uComponents.changeMarqueeText(self, Vue.t('device.noNewMsg'));
//				self.setRingingTime(null);
			}
		},
		error: (error) => {
			console.log(error);
			uPublic.openRequestErrorAlert(self);
		},
		complete: () => {
		}
	});
}

//设置设备信息
function setDevceInfo(self, data) {
	console.log(data);
	self.setBatteryPercent(data.BatteryPercentage.value);
	self.setBatteryState(config.powerIcon[Math.round(data.BatteryPercentage.value/20)]);
	if(data.action.value == 'notify'){
		if(data.notify_type.value == 104){
			//门铃响了
			let now = moment();
			let time = moment(data.time.value, "YY-MM-DD-hh-mm-ss");
			if(now.diff(time,'hours') < 24){
				self.setDoorbellRingingFlag(true);
				self.setTextDoorbellRingingFlag(true);
				self.setRingingTime(time.format("HH:mm"));
				setTimeout(() => {
					self.setDoorbellRingingFlag(false);
				},3000);
			}
		}else if(data.notify_type.value == 5){
			//请求远程开门
			self.setRemoteOpendoorFlag(true);
		}
	}
	if(data.action.value == 'lock_log' && (data.lock_action.value == '1' || data.lock_action.value == '4')){
		//开门或远程开门成功
		getLockInfo(self);
	}
}

function pushAction(msg) {
    console.log(msg);
//  var payload = msg.payload;
//  if (typeof payload == 'string') {
//      payload = JSON.parse(msg.payload);
//  }
//  console.log(payload);
//  if (payload.hasOwnProperty('date')) {
//      console.log('in evaluation');
//  } else if (payload.hasOwnProperty('report')) {
//      console.log('in slim');
//  }
}

function notificationListener() {
    if (plus.os.name == 'Android') {
        setInterval(function () {
        	console.log("innn");
            var pushMsgArray = plus.push.getAllMessage();
            plus.push.setAutoNotification(false);
            console.log(pushMsgArray);
            if (pushMsgArray) {
                var pushMsgLength = pushMsgArray.length;
                console.log(pushMsgLength);
                if (pushMsgLength) {
                    var pushMsg = pushMsgArray[(pushMsgArray.length - 1)];
                    pushAction(pushMsg);
                    plus.push.clear();
                }
            }
        }, config.GET_MSG_INTERVAL);
    }
    // 从系统消息中心点击消息启动应用事件
    plus.push.addEventListener('click', function (msg) {
        pushAction(msg);
    }, false);
    // 应用从推送服务器接收到推送消息事件
    plus.push.addEventListener('receive', function (msg) {
        pushAction(msg);
    }, false);
}


//tap 个人信息
function myInfoTap(self){
	iot.navigator.openWindow({
        url: '../myInfo/index.html',
        id: 'myInfo',
        extras: {
        	nickname: self.nickname
        }
    });
}

function bindDoorlockTap(){
	iot.navigator.openWindow({
        url: '../addDevice/index.html',
        id: 'addDevice'
    });
}


//tap 门锁管理
function doorlockManageTap(self){
	if(self.getValueDoorlockManage() == 1){
		iot.navigator.openWindow({
	        url: '../doorlockManage/index.html',
	        id: 'doorlockManage',
	        extras: {
	        	deviceId: self.deviceId,
	        	uuid: self.getUuid(),
	        	role: self.getRole()
	        }
	    });
	}
}

//tap 开门记录
function opendoorRecordTap(self){
	if(self.getValueOpendoorRecord() == 1){
		iot.navigator.openWindow({
	        url: './opendoorRecord.html',
	        id: 'opendoorRecord',
	        extras: {
	        	deviceId: self.deviceId
	        }
	    });	
	}
}

//tap 安全报警
function securityAlarmTap(self){
	if(self.getValueSecurityAlarm() == 1){
		iot.navigator.openWindow({
	        url: './alarmInfo.html',
	        id: 'alarmInfo',
	        extras: {
	        	deviceId: self.deviceId
	        }
	    });	
	}
}

//tap 门锁用户
function doorlockUserTap(self){
	if(self.getValueDoorlockUser() == 1){
		iot.navigator.openWindow({
	      	url: '../doorlockUsers/index.html',
	      	id: 'doorlockUsers',
	      	extras: {
	        	deviceId: self.deviceId,
	        	uuid: self.getUuid(),
	        	lockId: self.getLockId(),
	        	role: self.getRole()
	       	}
	  });	
	}
}

//tap 远程开门
function remoteOpendoorTap(self){
	if(self.getValueRemoteOpendoor() == 1){
		iot.navigator.openWindow({
	        url: './remoteOpendoor.html',
	        id: 'remoteOpendoor',
	        extras: {
	        	uuid: self.getUuid(),
	        	deviceId: self.deviceId
	        }
	    });	
	} 
	self.setRemoteOpendoorFlag(false);
//	iot.business.sds.setDeviceStatus({
//		    data: {
//		        uuid: self.getUuid(),
//		        setParams: {
//		        	'action': {
//		        		'value': 'openDoor'
//		        	},
//		            'remote_open_door': {
//		                'value': 'aaaaa'
//		            }
//		        }
//		    },
//		    success: (response) => {
//		    	console.log('远程开门成功');
//		    },
//		    error: (error) => {
//		    	console.log(error);
//			},
//		    complete(){
//		    }
//		});
//		let webview = null;
//		webview = plus.webview.create('./remoteOpendoor.html', 'remoteOpendoor', {'background':'transparent','z-index': '999'});
//		webview.addEventListener('close', function(){
//			webview=null;
//		});
//		webview.addEventListener('titleUpdate', function(){
//			webview.show('slide-in-right');
//		});
	
}

//tap 劫持报警
function hijackAlarmTap(self){
	if(self.getValueHijackAlarm() == 1){
		iot.navigator.openWindow({
	        url: './hijackRecord.html',
	        id: 'hijackRecord',
	        extras: {
	        	deviceId: self.deviceId
	        }
	    });	
	}
}

//tap 保存二维码到相册
function saveQRcodeButtonTap(){
    alert('保存二维码到相册');
}

//tap 稍后关注
function laterFollowTap(self){
    self.setFollowShowFlag(false);
}