angular.module('nurseApp').controller('alarmExpertConfigCtrl',['$scope','$filter','$rootScope','$modal','balert','bconfirm','baseTypeService','alarmExpertService','TemplateService','equipmentTemplateService','$q',
function($scope,$filter,$rootScope,$modal,balert,bconfirm,baseTypeService,alarmExpertService,TemplateService,equipmentTemplateService,$q){
    (function(){
        $scope.selectEvent = {
            EquipmentId:'',
            baseEquipmentId:'',
            keyWor:'',
            expired:'NULL'  //'NULL' 全部  0 未过期   1 过期
        }
        $scope.alarmexpertList = []
        $scope.equipmentTemplates = []
        $scope.alarmexpertInfo = {}
        $scope.uploadFileList = []
        $scope.allDevice = []
        $scope.allTemplate = []
        $scope.query = {
            baseEquipmentName:''
        }
        equipmentTemplateService.getAllEquipmentTemplate().then(function (data) {
            $scope.allTemplates = data;
            baseTypeService.getDeviceList().then(function(data){
                data.forEach(function(Equipment) {
                    $scope.allDevice.push({
                        EquipmentId:Equipment.EquipmentId,
                        EquipmentName:Equipment.EquipmentName,
                        EquipmentTemplateId:Equipment.EquipmentTemplateId,
                        baseEquipmentId:_.findWhere($scope.allTemplates,{EquipmentTemplateId:Equipment.EquipmentTemplateId}).EquipmentBaseType
                    });
                });
            })
        });
        TemplateService.GetEquipmentBaseType().then(function (data) {
            $scope.equipmentTemplates = data;
            $scope.serch()
        });
    })();

    var setAlarmExpertDialog = $modal({
        scope: $scope,
        templateUrl: 'partials/alarmExpert/setAlarmExpert.html',
        show: false
    });
    $scope.alarmExpertDialog = {
        title:'',
        type:''
    }

    $scope.serch = function(){
        alarmExpertService.getAlarmexpert($scope.selectEvent).then(function(data){
            if(data){
                $scope.alarmexpertList = data
                $scope.tableParams.onChange('',undefined)
            }
        })
    }

    $scope.getEquipmentBaseTypeName = function(baseId){
        if(baseId == '2200') return "ALL"
        var result = _.find($scope.equipmentTemplates, function (item) {
            return item.baseEquipmentId == baseId
        });
        if(result){
            return result.baseEquipmentName
        }
        return baseId
    }

    $scope.getEquipmentNameByID = function(Id){
        var result = _.find($scope.allDevice, function (item) {
            return item.EquipmentId == Id
        });
        if(result){
            return result.EquipmentName
        }
        return baseId
    }

    $scope.changeEquipmentBaseType = function(id){

    }
    $scope.changeEquipment = function(id,selectEvent){
        var deferred = $q.defer();
        var TemplateId = _.findWhere($scope.allDevice,{EquipmentId:id}).EquipmentTemplateId
        TemplateService.GetEventByEquipmentTemplateId(TemplateId).then(function (data) {
            if(data){
                $scope.EquipmentEvent = data
                deferred.resolve(data);
            }
            // if(selectEvent){
            //     $scope.alarmexpertInfo.EventId = selectEvent
            // }else{
            //     $scope.alarmexpertInfo.EventId = $scope.EquipmentEvent[0].EventId
            // }
        });
        return deferred.promise;
    }
    //导出
    $scope.exportToHtml = function () {
        $scope.loading = true
        alarmExpertService.getAlarmexpertAll().then(function (data) {
            if(data == "OK"){
                $scope.loading = false
                downloadAlarmexpertURI("/upload/exportData.xls","/upload/exportData.xls")
            }
            else{
                $scope.loading = false
                balert.show("danger", $scope.languageJson.alarmExpert.Prompt.ExportFailed, 3000);
            }
        });
    };

    //导入 star--------------------
    var addAlarmExpertDialog = $modal({
        scope: $scope,
        templateUrl: 'partials/alarmExpert/addAlarmExpert.html',
        show: false
    });
    $scope.$on("fileSelected", function (event, msg) {
            $scope.file = msg;
    });

    $scope.addAlarmExpertExcel = function () {
        addAlarmExpertDialog.$promise.then(addAlarmExpertDialog.show);
    };

    $scope.analysisHtml = function () {
        $scope.loading = true;
        var file = $scope.file;
        if (file === undefined) return;
        console.log($scope.file);
        if ($scope.file.name != "exportData.xls"){
            balert.show("danger", $scope.languageJson.alarmExpert.Prompt.fileName, 3000);  //文件名不同禁止导入
            $scope.loading = false
            return;
        }
        alarmExpertService.ImportAlarmExpert($scope.file).then(function(data){
            if(data == 'OK'){
                balert.show("success", $scope.languageJson.alarmExpert.Prompt.addSuess, 3000);//添加成功
                addAlarmExpertDialog.hide();
                $scope.serch()
            }else{
                $scope.loading = false
                balert.show("danger", $scope.languageJson.alarmExpert.Prompt.addFail, 3000);//添加失败
            }
        })
    }
    //导入 end--------------------
    function downloadAlarmexpertURI(uri,name){
        var link = document.createElement('a')
        link.download = name
        link.target = '_blank'
        link.href = uri
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
    }
    
    /*  数组分页
        pageNo   页码
        pageSize 显示条数
        array    AllSignalList
    */
    function pagination(pageNo, pageSize, array) {
        var offset = (pageNo - 1) * pageSize;
        return (offset + pageSize >= array.length) ? array.slice(offset, array.length) : array.slice(offset, offset + pageSize);
    }

    $scope.tableParams = {
        currentPage: 1,//当前页面
        itemsPerPage: 10,//显示条数
        pagesLength: 10,
        totalItems: 0,//总条数
        hint: {
            the: $scope.languageJson.Paging.The,
            page: $scope.languageJson.Paging.Page,
            articel: $scope.languageJson.Paging.Articel,
            eachPage: $scope.languageJson.Paging.EachPage,
            total: $scope.languageJson.Paging.Total,
            noData: $scope.languageJson.Paging.NoData
        },
        list: [],
        perPageOptions: [10, 20, 30, 40, 50],
        onChange: function (newValue, oldValue) {
            if (newValue == undefined) return;
            $scope.loading = true;
            var index = $scope.tableParams.currentPage;//当前页面
            var size = $scope.tableParams.itemsPerPage;//显示条数
            // var filterList = $filter('filter')(newValue,$scope.serch);//数据筛选
            //分页
            $scope.tableParams.list = pagination(index,size,$scope.alarmexpertList)
            $scope.tableParams.totalItems = $scope.alarmexpertList.length
            $rootScope.$emit('resultTotal', {});
            $scope.loading = false;
        }
    };

    $scope.setAlarmExpert = function(alarm){
        console.log(alarm)
        $scope.uploadFileList = []
        $scope.alarmexpertInfo = {}
        $scope.alarmExpertDialog.title = $scope.languageJson.alarmExpert.add + $scope.languageJson.alarmExpert.alarmList
        $scope.alarmExpertDialog.type = 'add'
        $scope.alarmexpertInfo.keyWord = alarm.meanings
        $scope.alarmexpertInfo.alarmexpertattachment = $scope.uploadFileList
        $scope.alarmexpertInfo.EquipmentId = alarm.deviceId
        $scope.changeEquipment($scope.alarmexpertInfo.EquipmentId).then(function(data){
            if(data){
                var event = _.findWhere(data,{EventName:alarm.eventName})
                if(event){
                    $scope.alarmexpertInfo.EventId = event.EventId
                }else{
                    $scope.alarmexpertInfo.EventId = data[0].EventId
                }
            }
        })
        TemplateService.GetEquipmentBaseType().then(function (data) {
            if(data){
                $scope.equipmentTemplates = data;
                alarmExpertService.getEquipmentBaseType(alarm.deviceId).then(function(baseId){
                    if(baseId){
                        $scope.alarmexpertInfo.baseEquipmentId = baseId
                        setAlarmExpertDialog.show()
                    }
                })
            }
        });
    }

    //点击添加
    $scope.addAlarmexpert = function(){
        $scope.uploadFileList = []
        $scope.alarmexpertInfo = {}
        $scope.alarmExpertDialog.title = $scope.languageJson.alarmExpert.add + $scope.languageJson.alarmExpert.alarmList
        $scope.alarmExpertDialog.type = 'add'
        $scope.alarmexpertInfo.alarmexpertattachment = $scope.uploadFileList
        // $scope.alarmexpertInfo.baseEquipmentId = $scope.equipmentTemplates[0].baseEquipmentId
        // var a = _.findWhere($scope.allDevice,{baseEquipmentId:$scope.alarmexpertInfo.baseEquipmentId}).EquipmentId
        $scope.alarmexpertInfo.EquipmentId = $scope.allDevice[0].EquipmentId
        $scope.changeEquipment($scope.alarmexpertInfo.EquipmentId).then(function(data){
            if(data){
                $scope.alarmexpertInfo.EventId = data[0].EventId
            }
        })
        // $scope.alarmexpertInfo.baseEquipmentId = _.findWhere($scope.equipmentTemplates,{baseEquipmentId:$scope.allDevice[0].baseEquipmentId}).baseEquipmentId
        setAlarmExpertDialog.show()
    }
    //点击编辑
    $scope.editAlarmexpert = function(rowData){
        $scope.uploadedFileList = JSON.parse(JSON.stringify(rowData.alarmexpertattachment))
        $scope.uploadFileList = []
        $scope.alarmExpertDialog.title = $scope.languageJson.alarmExpert.edit + $scope.languageJson.alarmExpert.alarmList
        $scope.alarmExpertDialog.type = 'edit'
        $scope.alarmexpertInfo = JSON.parse(JSON.stringify(rowData))
        $scope.alarmexpertInfo.EquipmentId = $scope.alarmexpertInfo.equipmentId
        $scope.alarmexpertInfo.EventId = $scope.alarmexpertInfo.eventId
        $scope.changeEquipment($scope.alarmexpertInfo.EquipmentId).then(function(data){
            if(data){
                $scope.alarmexpertInfo.EventId = $scope.alarmexpertInfo.eventId
            }
        })
        $scope.alarmexpertInfo.verification == 1 ? $scope.isVerify = true : $scope.isVerify = false
        $scope.alarmexpertInfo.alarmexpertattachment = $scope.uploadFileList
        // $scope.uploadFileList = getUplodList($scope.alarmexpertInfo.alarmexpertattachment)
        setAlarmExpertDialog.show()
    }
    //点击详情
    $scope.showAlarmexpert = function(rowData){
        $scope.uploadedFileList = JSON.parse(JSON.stringify(rowData.alarmexpertattachment))
        $scope.uploadFileList = []
        $scope.alarmExpertDialog.title = $scope.languageJson.alarmExpert.alarmList + $scope.languageJson.alarmExpert.info
        $scope.alarmExpertDialog.type = 'info'
        $scope.alarmexpertInfo = rowData
        $scope.alarmexpertInfo.EquipmentId = $scope.alarmexpertInfo.equipmentId
        $scope.changeEquipment($scope.alarmexpertInfo.EquipmentId).then(function(data){
            if(data){
                $scope.alarmexpertInfo.EventId = $scope.alarmexpertInfo.eventId
            }
        })

        $scope.alarmexpertInfo.verification == 1 ? $scope.isVerify = true : $scope.isVerify = false
        // $scope.uploadFileList = getUplodList($scope.alarmexpertInfo.alarmexpertattachment)
        setAlarmExpertDialog.show()
    }

    function getUplodList(arr){
        var result = []
        for (var i = 0; i < arr.length; i++) {
            result.push(
                {
                    id:i+1,
                    FileName:arr[i].attachmentName,
                    File:arr[i].attachmentPath
                }
            )
            
        }
        return result
    }

    //点击保存
    $scope.setAlarmexpertInfo = function(alarmExpertDialog,alarmexpertInfo){
        $scope.alarmexpertInfo = alarmexpertInfo
        $scope.loading = true;
        $scope.alarmexpertInfo.createrUser = localStorage.getItem("username")
        var danger = cheakFilterData($scope.alarmexpertInfo)
        if(danger){
            balert.show("danger", danger, 3000);
            $scope.loading = false;
            return
        }
        if($scope.alarmexpertInfo.keyWord){
            $scope.alarmexpertInfo.keyWord = $scope.alarmexpertInfo.keyWord.replaceAll(',',',')
        }
        switch (alarmExpertDialog.type) {
            case 'add':
                alarmexpertAdd()
                break;
            case 'edit':
                alarmexpertEdit()
                break;    
            default:
                break;
        }
    }

    //告警专家知识录入
    function alarmexpertAdd(){
        alarmExpertService.alarmexpertAdd($scope.alarmexpertInfo).then(function(data){
            if(data == 'OK'){
                balert.show("success", $scope.languageJson.alarmExpert.Prompt.addSuess, 3000);//添加成功
                $scope.serch()
                $scope.loading = false
                setAlarmExpertDialog.hide()
            }else{
                $scope.loading = false
                balert.show("danger", $scope.languageJson.alarmExpert.Prompt.addFail, 3000);//添加失败

            }
        })
    }
    //告警专家知识编辑
    function alarmexpertEdit(){
        $scope.alarmexpertInfo.alarm_Id = $scope.alarmexpertInfo.alarmId
        var req = {
            alarm_Id:$scope.alarmexpertInfo.alarmId,
            title:$scope.alarmexpertInfo.title,
            problem:$scope.alarmexpertInfo.problem,
            solution:$scope.alarmexpertInfo.solution,
            // baseEquipmentId:$scope.alarmexpertInfo.baseEquipmentId,
            equipmentId:$scope.alarmexpertInfo.EquipmentId,//设备id
            eventId:$scope.alarmexpertInfo.EventId,//事件id
            keyWord:$scope.alarmexpertInfo.keyWord,
            verificationUser:$scope.alarmexpertInfo.verification == '1' ? $scope.alarmexpertInfo.createrUser : "",
            verification:$scope.alarmexpertInfo.verification,
            remarks:$scope.alarmexpertInfo.remarks,
            alarmexpertattachment:$scope.alarmexpertInfo.alarmexpertattachment
        }
        alarmExpertService.alarmexpertModify(req).then(function(data){
            if(data == 'OK'){
                balert.show("success", $scope.languageJson.alarmExpert.Prompt.editSuess, 3000);//修改成功
                $scope.serch()
                $scope.loading = false
                setAlarmExpertDialog.hide()
            }else{
                $scope.loading = false
                balert.show("danger", $scope.languageJson.alarmExpert.Prompt.editFail, 3000);//修改失败

            }
        })
    }

    //配置无效
    $scope.confNotEffective = function(){
        //确认配置无效?
        bconfirm.show($scope, $scope.languageJson.alarmExpert.save + $scope.languageJson.alarmExpert.notEffective + '?').then(function (data) {
            if (data) {
                $scope.loading = true
                var req = {
                    alarm_Id:$scope.alarmexpertInfo.alarmId,
                    expired:1
                }
                alarmExpertService.alarmexpertModify(req).then(function(data){
                    if(data == 'OK'){
                        balert.show("success", $scope.languageJson.alarmExpert.Prompt.editSuess, 3000);//修改成功
                        $scope.serch()
                        $scope.loading = false
                        setAlarmExpertDialog.hide()
                    }else{
                        $scope.loading = false
                        balert.show("danger", $scope.languageJson.alarmExpert.Prompt.editFail, 3000);//修改失败
        
                    }
                })
            }
        });
    }

    function cheakFilterData(checkData){
        var result = false
        if(!checkData.title){
            return result = $scope.languageJson.alarmExpert.Prompt.titleNULL
        }
        if(!checkData.problem){
            return result = $scope.languageJson.alarmExpert.Prompt.problemNULL
        }
        if(!checkData.solution){
            return result = $scope.languageJson.alarmExpert.Prompt.solutionNULL
        }
        return result
    }

    $scope.$on("fileSelected", function (event, msg) {
        $scope.File = msg;
        $scope.loading=true;
        if ($scope.File == undefined) {
            // balert.show('danger', $scope.languageJson.Configuration.ImageControl.UploadError, 3000);
            $scope.loading=false;
            return;
        }
        if($scope.File.size > 512000){
            balert.show('danger', "请选择小于500k的文件!", 3000);
            $scope.loading=false;
            return;
        }
        var reader = new FileReader();
        //读取文件
        reader.readAsDataURL($scope.File);
        //读取成功
        reader.addEventListener('load', function(e) {
            var str = this.result;
            var id = $scope.uploadFileList.length + 1
            $scope.uploadFileList.push(
                {
                    id:id,
                    FileName:$scope.File.name,
                    File:str
                }
            )
            $scope.loading=false;
        });
    });
    $scope.uploadFile = function(){
        var $file = $('#file1')
        $file.focus().click();
    }
    $scope.removeUpload = function(index){
        $scope.uploadFileList.splice(index,1)
    }
}])