systemConfigurationModule.controller('fixedAssetsRuleEngineeController', ['$scope', '$translate', '$log', 'ruleEngineService', 'KeyValueConfigService', 'orgService', 'templateGroupService', 'assetGroupService', 'ruleEngineOp', 'ruleEngineComparer','SweetAlert','$timeout',
    function ($scope, $translate, $log, ruleEngineService, KeyValueConfigService, orgService, templateGroupService, assetGroupService, ruleEngineOp, ruleEngineComparer, SweetAlert, $timeout) {
        $scope.mappingData = [];
        $scope.fixedAssetData = [];
        $scope.assetGroupType = '1';

        //初始化固定资产的ack-pagination
        $scope.fixedAssetPagingOptions = {
            pageIndex:  1,  //当前页码
            totalItems: 0,  //总数据
            totalPages: 10,//总页数
            maxSize: 5, //分页数字的限制。
            pageSize: constant.page.pageSizeArrary[0],  //每页多少条数据
            pageSizeString: constant.page.pageSizeArrary[1].toString(),
            firstPage: '<<', //$translate.instant('PagingFirstPage'),
            previousPage: '<', //$translate.instant('PagingPreviousPage'),
            nextPage:'>',// $translate.instant('PagingNextPage'),
            lastPage: '>>', //$translate.instant('PagingLastPage'),
        };

        //初始化长期待摊的ack-pagination
        $scope.longTermPendingPagingOptions = {
            pageIndex:  1,  //当前页码
            totalItems: 0,  //总数据
            totalPages: 10,//总页数
            maxSize: 5, //分页数字的限制。
            pageSize: constant.page.pageSizeArrary[0],  //每页多少条数据
            pageSizeString: constant.page.pageSizeArrary[1].toString(),
            firstPage: '<<', //$translate.instant('PagingFirstPage'),
            previousPage: '<', //$translate.instant('PagingPreviousPage'),
            nextPage:'>',// $translate.instant('PagingNextPage'),
            lastPage: '>>', //$translate.instant('PagingLastPage'),
        };

        //初始化无形资产的ack-pagination
        $scope.intangibleAssetsPagingOptions = {
            pageIndex:  1,  //当前页码
            totalItems: 0,  //总数据
            totalPages: 10,//总页数
            maxSize: 5, //分页数字的限制。
            pageSize: constant.page.pageSizeArrary[0],  //每页多少条数据
            pageSizeString: constant.page.pageSizeArrary[1].toString(),
            firstPage: '<<', //$translate.instant('PagingFirstPage'),
            previousPage: '<', //$translate.instant('PagingPreviousPage'),
            nextPage:'>',// $translate.instant('PagingNextPage'),
            lastPage: '>>', //$translate.instant('PagingLastPage'),
        };
//赋值
        $scope.fixedAssetPagingOptions = $scope.fixedAssetPagingOptions;
        $scope.longTermPendingPagingOptions = $scope.longTermPendingPagingOptions;
        $scope.intangibleAssetsPagingOptions = $scope.intangibleAssetsPagingOptions;
        $scope.hideSelector = $scope.hidePageSizeSelector ? true : false;


        //获取固定资产二级分类的数据
        var getAllFixedAssetDetailGroup = function(assetGroupType){

            var pageIndex = 1;
            var pageSize = 10;
            if(assetGroupType == '1'){
                pageIndex = $scope.fixedAssetPagingOptions.pageIndex;
                pageSize = $scope.fixedAssetPagingOptions.pageSize;
            }else if(assetGroupType == '2'){
                pageIndex = $scope.longTermPendingPagingOptions.pageIndex;
                pageSize = $scope.longTermPendingPagingOptions.pageSize;
            }else{
                pageIndex = $scope.intangibleAssetsPagingOptions.pageIndex;
                pageSize = $scope.intangibleAssetsPagingOptions.pageSize;
            }
            assetGroupService.getAllFixedAssetDetailGroup(assetGroupType,pageIndex,pageSize).success(function(fixedAssetData){

                if(assetGroupType == '1'){
                    $scope.fixedAssetData = fixedAssetData.data['detailGroup'].list;
                    initFixedAssetPagingControl(fixedAssetData.data['totalItem']);
                }else if(assetGroupType == '2'){
                    $scope.longTermPendingData = fixedAssetData.data['detailGroup'].list;
                    initLongTermPagingControl(fixedAssetData.data['totalItem']);
                }else{
                    $scope.intangibleAssetsData = fixedAssetData.data['detailGroup'].list;
                    initIntangibleAssetsPagingControl(fixedAssetData.data['totalItem']);
                }

            }).error(function(){

                SweetAlert.error("获取类型为"+assetGroupType+"的资产数据出错");
            });
        };

        //获取资产二级分类的数据
        var getAllAssetDetailGroup = function(){

            assetGroupService.getAllAssetDetailGroup().success(function(resultData){

                $scope.fixedAssetData = resultData.data['1'];//1代表固定资产,获取返回数据map的key
                $scope.longTermPendingData = resultData.data['2'];//2代表固定资产,获取返回数据map的key
                $scope.intangibleAssetsData = resultData.data['3'];//3代表固定资产,获取返回数据map的key
            }).error(function(){

                SweetAlert.error("获取资产数据出错");
            });
        };

        $scope.pagingService = {
            refreshFixedAssetDataGrid: function (assetGroupType) {

                $log.debug("refreshFixedAssetGrid");
                getAllFixedAssetDetailGroup(assetGroupType);
            }
        };
        var initFixedAssetPagingControl = function (totalItemsCount) {

            $scope.fixedAssetPagingOptions.totalItems = totalItemsCount;
        };
        var initLongTermPagingControl = function (totalItemsCount) {

            $scope.longTermPendingPagingOptions.totalItems = totalItemsCount;
        };
        var initIntangibleAssetsPagingControl = function (totalItemsCount) {

            $scope.intangibleAssetsPagingOptions.totalItems = totalItemsCount;
        };

        var editModalSelector = ".fixed-assets-rule-enginee #edit-modal";
        var mappingModalSelector = ".fixed-assets-rule-enginee #map-modal";

        //清空
        $scope.resetFixedAssetsObject = function () {
            $scope.fixedAssetsObject = { detailGroupType: "", detailGroupName: "", groupYear: "" };
        };
        //创建--固定资产
        $scope.createNewData = function (type) {

            $scope.isEdit = false;
            $scope.assetGroupType = type;
            $scope.resetFixedAssetsObject();

           //根据当前资产的一级分类判断当前modal需要显示的标签
            if (type == "1"){
                $scope.assetAdd = "StandardFixedAssetsAdd";
                $scope.assetEdit = "StandardFixedAssetsEdit";
                $scope.assetCode = "FixedAssetsCode";
                $scope.assetName = "FixedAssetsName";
                $scope.assetAgeLimit = "FixedAssetsAgeLimit";
            } else if(type == "2") {
                $scope.assetAdd = "LongTermPendingAdd";
                $scope.assetEdit = "LongTermPendingEdit";
                $scope.assetCode = "LongTermPendingCode";
                $scope.assetName = "LongTermPendingName";
                $scope.assetAgeLimit = "LongTermPendingAgeLimit";
            } else if(type == "3") {
                $scope.assetAdd = "IntangibleAssetsAdd";
                $scope.assetEdit = "IntangibleAssetsEdit";
                $scope.assetCode = "IntangibleAssetsCode";
                $scope.assetName = "IntangibleAssetsName";
                $scope.assetAgeLimit = "IntangibleAssetsAgeLimit";
            }
            $(editModalSelector).modal('show');
        };

        //保存当前正在编辑数据行,经过界面初步校验后才会进入本功能
        $scope.saveEditRow = function () {
            //给fixedAssetsObject实体赋予属性assetGroupType并赋值
            $scope.fixedAssetsObject.assetGroupType = $scope.assetGroupType;
            if($scope.isEdit){

                assetGroupService.updateAssetDetailGroup($scope.fixedAssetsObject).success(function () {
                    $(editModalSelector).modal('hide');
                    getAllFixedAssetDetailGroup($scope.assetGroupType);
                    // getAllAssetDetailGroup();
                });
            }else{


                assetGroupService.addAssetDetailGroup($scope.fixedAssetsObject).success(function () {

                    if ($scope.fixedAssetsObject.groupYear)
                        $scope.fixedAssetsObject.groupYear = $scope.fixedAssetsObject.groupYear + "年";
                    // $scope.fixedAssetData.push($scope.fixedAssetsObject);
                    $(editModalSelector).modal('hide');
                    getAllFixedAssetDetailGroup($scope.assetGroupType);
                    // getAllAssetDetailGroup();
                });
            }

        };

        //取消保存当前编辑行
        $scope.cancelEditOS = function () {
            $(editModalSelector).modal('hide');
        };
        //删除
        $scope.delete = function (data) {

            assetGroupService.deleteAssetDetailGroup(data.id).success(function(){
                getAllFixedAssetDetailGroup(data.assetGroupType);
                // var index = $scope.fixedAssetData.indexOf(data);
                // if (index !== -1) {
                //     $scope.fixedAssetData.splice(index, 1);
                // }
            }).error(function () {
                SweetAlert.error("删除失败!")
            });

        };
        $scope.editRow = function (data,type) {

            $scope.assetGroupType = type;
            $scope.isEdit = true;
            $scope.fixedAssetsObject = angular.copy(data)
            if (data.year) {
                var m = data.year.substring(0, data.year.length - 1);
                $scope.fixedAssetsObject.year = m;
            }
            //根据当前资产的一级分类判断当前modal需要显示的标签
            if (type == "1"){
                $scope.assetAdd = "StandardFixedAssetsAdd";
                $scope.assetEdit = "StandardFixedAssetsEdit";
                $scope.assetCode = "FixedAssetsCode";
                $scope.assetName = "FixedAssetsName";
                $scope.assetAgeLimit = "FixedAssetsAgeLimit";
            } else if(type == "2") {
                $scope.assetAdd = "LongTermPendingAdd";
                $scope.assetEdit = "LongTermPendingEdit";
                $scope.assetCode = "LongTermPendingCode";
                $scope.assetName = "LongTermPendingName";
                $scope.assetAgeLimit = "LongTermPendingAgeLimit";
            } else if(type == "3") {
                $scope.assetAdd = "IntangibleAssetsAdd";
                $scope.assetEdit = "IntangibleAssetsEdit";
                $scope.assetCode = "IntangibleAssetsCode";
                $scope.assetName = "IntangibleAssetsName";
                $scope.assetAgeLimit = "IntangibleAssetsAgeLimit";
            }
            $(editModalSelector).modal('show');
        };
        $scope.editMapping = function (data) {
            $scope.mappingData = data.mapData;
            $(mappingModalSelector).modal('show');
            $timeout(function () {
                loadDetailMap();
            }, 100);          
        };
        $scope.deleteMap = function (data) {
            var index = $scope.mappingData.indexOf(data);
            if (index !== -1) {
                $scope.mappingData.splice(index, 1);
            }
        };
        $scope.saveMapRow = function () {
            $(mappingModalSelector).modal('hide');
        };

        //初始化invoice datagrid 树,固定资产grid
        var InitInvoiceFixedAssetsGrid = function () {

            var allowFilter = false;
            $scope.fixedAssetsGridOptions = {
                bindingOptions: {
                    dataSource: 'fixedAssetData',
                },
                hoverStateEnabled: true,
                headerFilter: {
                    visible: true,
                    height: 300,
                },
                selection: {
                    mode: "single"
                },
                paging: {
                    enabled: false,
                },
                allowColumnResizing: true,
                columnAutoWidth: true,
                showRowLines: true,
                showColumnLines: true,
                //rowAlternationEnabled: true,
                showBorders: true,
                noDataText: $translate.instant('NoDataText'),
                selectAllText: $translate.instant('SelectAll'),
                onContentReady: function (e) {
                    $scope.invoiceGridInstance = e.component;
                },
                columns: [
                            { dataField: 'detailGroupType', caption: $translate.instant('FixedAssetsCode'), allowHeaderFiltering: allowFilter, alignment: 'left', width: 150 },
                    {
                        dataField: 'detailGroupName', caption:  $translate.instant('FixedAssetsName'), allowHeaderFiltering: allowFilter, width: 450
                    },
                    { dataField: 'groupYear', caption:  $translate.instant('FixedAssetsAgeLimit'), width: 100, allowHeaderFiltering: allowFilter },
                    {
                        dataField: 'id', caption: $translate.instant('Operation'), allowHeaderFiltering: allowFilter, alignment: 'center',
                        cellTemplate: function (container, options) {
                            try {
                                var data = options.data;

                                $("<span class='span-btn' />")
                                       .text($translate.instant('Edit'))
                                       .on('click', function () {
                                           $scope.editRow(data,'1');
                                       })
                                   .appendTo(container);

                                $("<span class='span-btn' />")
                                    .text($translate.instant('Delete'))
                                    .on('click', function () {
                                        $scope.delete(data);
                                    })
                                .appendTo(container);

                                // $("<span class='span-btn' />")
                                //     .text($translate.instant('CorrespondenceMaintain'))
                                //     .on('click', function () {
                                //         $scope.editMapping(data);
                                //     })
                                // .appendTo(container);

                            }
                            catch (e) {
                                $log.error(e);
                            }
                        }
                    },
                ],
            };
        };

        //初始化invoice datagrid 树,长期待摊grid
        var InitInvoiceLongTermPendingGrid = function () {

            var allowFilter = false;
            $scope.longTermPendingGridOptions = {
                bindingOptions: {
                    dataSource: 'longTermPendingData',
                },
                hoverStateEnabled: true,
                headerFilter: {
                    visible: true,
                    height: 300,
                },
                selection: {
                    mode: "single"
                },
                paging: {
                    enabled: false,
                },
                allowColumnResizing: true,
                columnAutoWidth: true,
                showRowLines: true,
                showColumnLines: true,
                //rowAlternationEnabled: true,
                showBorders: true,
                noDataText: $translate.instant('NoDataText'),
                selectAllText: $translate.instant('SelectAll'),
                onContentReady: function (e) {
                    $scope.invoiceGridInstance = e.component;
                },
                columns: [
                            { dataField: 'detailGroupType', caption: $translate.instant('LongTermPendingCode'), allowHeaderFiltering: allowFilter, alignment: 'left', width: 150 },
                    {
                        dataField: 'detailGroupName', caption:  $translate.instant('LongTermPendingName'), allowHeaderFiltering: allowFilter, width: 450
                    },
                    { dataField: 'groupYear', caption:  $translate.instant('LongTermPendingAgeLimit'), width: 100, allowHeaderFiltering: allowFilter },
                    {
                        dataField: 'id', caption: $translate.instant('Operation'), allowHeaderFiltering: allowFilter, alignment: 'center',
                        cellTemplate: function (container, options) {
                            try {
                                var data = options.data;

                                $("<span class='span-btn' />")
                                       .text($translate.instant('Edit'))
                                       .on('click', function () {
                                           $scope.editRow(data,'2');
                                       })
                                   .appendTo(container);

                                $("<span class='span-btn' />")
                                    .text($translate.instant('Delete'))
                                    .on('click', function () {
                                        $scope.delete(data);
                                    })
                                .appendTo(container);

                                // $("<span class='span-btn' />")
                                //     .text($translate.instant('CorrespondenceMaintain'))
                                //     .on('click', function () {
                                //         $scope.editMapping(data);
                                //     })
                                // .appendTo(container);

                            }
                            catch (e) {
                                $log.error(e);
                            }
                        }
                    },
                ],
            };
        };

        //初始化invoice datagrid 树,无形资产grid
        var InitInvoiceIntangibleAssetsGrid = function () {

            var allowFilter = false;
            $scope.intangibleAssetsGridOptions = {
                bindingOptions: {
                    dataSource: 'intangibleAssetsData',
                },
                hoverStateEnabled: true,
                headerFilter: {
                    visible: true,
                    height: 300,
                },
                selection: {
                    mode: "single"
                },
                paging: {
                    enabled: false,
                },
                allowColumnResizing: true,
                columnAutoWidth: true,
                showRowLines: true,
                showColumnLines: true,
                //rowAlternationEnabled: true,
                showBorders: true,
                noDataText: $translate.instant('NoDataText'),
                selectAllText: $translate.instant('SelectAll'),
                onContentReady: function (e) {
                    $scope.invoiceGridInstance = e.component;
                },
                columns: [
                            { dataField: 'detailGroupType', caption: $translate.instant('IntangibleAssetsCode'), allowHeaderFiltering: allowFilter, alignment: 'left', width: 150 },
                    {
                        dataField: 'detailGroupName', caption:  $translate.instant('IntangibleAssetsName'), allowHeaderFiltering: allowFilter, width: 450
                    },
                    { dataField: 'groupYear', caption:  $translate.instant('IntangibleAssetsAgeLimit'), width: 100, allowHeaderFiltering: allowFilter },
                    {
                        dataField: 'id', caption: $translate.instant('Operation'), allowHeaderFiltering: allowFilter, alignment: 'center',
                        cellTemplate: function (container, options) {
                            try {
                                var data = options.data;

                                $("<span class='span-btn' />")
                                       .text($translate.instant('Edit'))
                                       .on('click', function () {
                                           $scope.editRow(data,'3');
                                       })
                                   .appendTo(container);

                                $("<span class='span-btn' />")
                                    .text($translate.instant('Delete'))
                                    .on('click', function () {
                                        $scope.delete(data);
                                    })
                                .appendTo(container);

                                // $("<span class='span-btn' />")
                                //     .text($translate.instant('CorrespondenceMaintain'))
                                //     .on('click', function () {
                                //         $scope.editMapping(data);
                                //     })
                                // .appendTo(container);

                            }
                            catch (e) {
                                $log.error(e);
                            }
                        }
                    },
                ],
            };
        };

        var loadDetailMap = function () {
            var allowFilter = false;
            $scope.fixedAssetsMapGridOptions = {
                bindingOptions: {
                    dataSource: 'mappingData',
                },
                //dataSource:$scope.mappingData,
                hoverStateEnabled: true,
                headerFilter: {
                    visible: true,
                    height: 300,
                },
                selection: {
                    mode: "single"
                },
                paging: {
                    enabled: false,
                },
                allowColumnResizing: true,
                columnAutoWidth: true,
                showRowLines: true,
                showColumnLines: true,
                //rowAlternationEnabled: true,
                showBorders: true,
                noDataText: $translate.instant('NoDataText'),
                selectAllText: $translate.instant('SelectAll'),
                onContentReady: function (e) {
                    $scope.invoiceGridInstance = e.component;
                },
                columns: [
                    { dataField: 'name', caption: $translate.instant('FixedAssetsClassify'), allowHeaderFiltering: allowFilter, alignment: 'left', width: 300 },
                    {
                        dataField: 'keyValue', caption: $translate.instant('CompanyFixedAssetKeyValue'), allowHeaderFiltering: allowFilter, width: 300
                    },

                    {
                        dataField: 'id', caption: $translate.instant('Operation'), allowHeaderFiltering: allowFilter, alignment: 'center',
                        cellTemplate: function (container, options) {
                            try {
                                var data = options.data;
                                $("<span class='span-btn' />")
                                    .text($translate.instant('Delete'))
                                    .on('click', function () {
                                        $scope.deleteMap(data);
                                    })
                                .appendTo(container);

                            }
                            catch (e) {
                                $log.error(e);
                            }
                        }
                    },
                ],
            };
        };

        //-----------custom table---end--------------------------
        (function initalization() {
            InitInvoiceFixedAssetsGrid();
            InitInvoiceLongTermPendingGrid();
            InitInvoiceIntangibleAssetsGrid();
            loadDetailMap();
            getAllFixedAssetDetailGroup(1);
            getAllFixedAssetDetailGroup(2);
            getAllFixedAssetDetailGroup(3);
            // getAllAssetDetailGroup();
        })();
    }]);