//Common Bind Module Method
var bindModule = function (thisModule, controllerProvider, compileProvider, filterProvider, provide) {

    thisModule.controller = controllerProvider.register;
    thisModule.directive = compileProvider.directive;
    thisModule.filter = filterProvider.register;
    thisModule.factory = provide.factory;
    thisModule.service = provide.service;

    return thisModule;
};

var assetsManageModule = angular.module('app.assetsManage', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning'])
    .run(['$log', function ($log) {
        $log.debug('app.assetsManage.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) {
            'use strict';
            // this is required to add controller/directive/filter/service after angular bootstrap
            bindModule(assetsManageModule, $controllerProvider, $compileProvider, $filterProvider, $provide);

            uiSelectConfig.theme = 'select2';

            $urlRouterProvider.when('/assetsManage', '/assetsManage/importData/productItem');

            $urlRouterProvider.when('/assetsManage/importData', '/assetsManage/importData/productItem');

            $urlRouterProvider.when('/assetsManage/previewData', '/assetsManage/previewData/productItem');

            $urlRouterProvider.when('/assetsManage/productMix', '/assetsManage/productMix/productItem');

            $stateProvider.state({
                name: 'assetsManage',
                url: '/assetsManage',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
                                appTranslation.load([appTranslation.cit]);
                            }],
                        template: '<assets-manage-layout></assets-manage-layout>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.importData',
                url: '/importData',
                views: {
                    '@assetsManage': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<assets-manage-import-layout></assets-manage-import-layout>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.importData.productItem',
                url: '/productItem',
                views: {
                    '@assetsManage.importData': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<product-item-import></product-item-import>'
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.previewData',
                url: '/previewData',
                views: {
                    '@assetsManage': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                                    function ($scope, $stateParams, appTranslation) {
                                                        appTranslation.load([appTranslation.cit]);
                                                    }],
                        template: '<assets-manage-import-layout></assets-manage-import-layout>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.previewData.productItem',
                url: '/productItem',
                views: {
                    '@assetsManage.previewData': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<product-item-preview></product-item-preview>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.generateReport',
                url: '/generateReport',
                views: {
                    '@assetsManage': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<assets-manage-report-layout></assets-manage-report-layout>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.productMix',
                url: '/productMix',
                views: {
                    '@assetsManage': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                                    function ($scope, $stateParams, appTranslation) {
                                                        appTranslation.load([appTranslation.cit]);
                                                    }],
                        template: '<assets-manage-import-layout></assets-manage-import-layout>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.productMix.productItem',
                url: '/productMix',
                views: {
                    '@assetsManage.productMix': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<product-item-mix></product-item-mix>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.generateReport.reportView',
                url: '/reportView?{id:string}&{templateid:string}&{name:string}',
                views: {
                    '@assetsManage.generateReport': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            $scope.reportId = $stateParams.id;
                                            $scope.templateId = $stateParams.templateid;
                                            $scope.templateName = $stateParams.name;
                                            appTranslation.load([appTranslation.cit]);
                                        }],
                        template: '<assets-manage-report-view report-id="reportId" template-id="templateId" template-name="templateName"></assets-manage-report-view>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'assetsManage.generateReport.reportViewCit',
                url: '/reportViewCit?{id:string}&{templateid:string}&{name:string}',
                views: {
                    '@assetsManage.generateReport': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            $scope.reportId = $stateParams.id;
                                            $scope.templateId = $stateParams.templateid;
                                            $scope.templateName = $stateParams.name;
                                            appTranslation.load([appTranslation.cit]);
                                        }]
                        //template: '<cit-report-view2 report-id="reportId" template-id="templateId" template-name="templateName"></cit-report-view2>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.assetsManage),
                deepStateRedirect: true,
                sticky: true
            });
        }]);

var vatDashboardModule = angular.module('app.vatDashboard', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning'])
    .run(['$log', function ($log) {
        $log.debug('app.vatDashboard.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) {
            'use strict';
            // this is required to add controller/directive/filter/service after angular bootstrap
            bindModule(vatDashboardModule, $controllerProvider, $compileProvider, $filterProvider, $provide);

            $stateProvider.state({
                name: 'summaryDashboard',
                url: '/summaryDashboard',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<summary-dashboard></summary-dashboard>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'summaryDashboardConfig',
                url: '/summaryDashboardConfig/{id}',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<summary-dashboard-config></summary-dashboard-config>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'reportAnalysisDashboardConfig',
                url: '/reportAnalysisDashboardConfig/{id}',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<report-analysis-dashboard-config></report-analysis-dashboard-config>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'organizationDashboard',
                url: '/organizationDashboard/{id}',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<organization-dashboard></organization-dashboard>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'analyzeOrganizeDashboard',
                url: '/analyzeOrganizeDashboard/{id}',
                views: {
                    '@vat.analyzeLayout': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<organization-dashboard></organization-dashboard>',

                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'analyzeOrganizeDashboardConfig',
                url: '/analyzeOrganizeDashboardConfig/{id}',
                views: {
                    '@vat.analyzeLayout': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<report-analysis-dashboard-config></report-analysis-dashboard-config>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });
            $stateProvider.state({
                name: 'citAnalyzeOrganizeDashboard',
                url: '/citAnalyzeOrganizeDashboard/{id}',
                views: {
                    '@cit.analyzeLayout': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat, appTranslation.cit]);
                                        }],
                        template: '<cit-organization-dashboard></cit-organization-dashboard>',

                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'citAnalyzeOrganizeDashboardConfig',
                url: '/citAnalyzeOrganizeDashboardConfig/{id}',
                views: {
                    '@cit.analyzeLayout': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat, appTranslation.cit]);
                                        }],
                        template: '<cit-report-analysis-dashboard-config></cit-report-analysis-dashboard-config>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.cit),
                deepStateRedirect: true,
                sticky: true
            });

        }]);

var vatDongfengModule = angular.module('app.vatDongfeng', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngSanitize', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning'])
    .run(['$log', function ($log) {
        $log.debug('app.vatDongfeng.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) {
            'use strict';
            // this is required to add controller/directive/filter/service after angular bootstrap
            bindModule(vatDongfengModule, $controllerProvider, $compileProvider, $filterProvider, $provide);

            $stateProvider.state({
                name: 'IncomeTax',
                url: '/IncomeTax',
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<dongfeng-nav-bar type="1"></dongfeng-nav-bar>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'CashFlow',
                url: '/CashFlow',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<dongfeng-nav-bar type="2"></dongfeng-nav-bar>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'DataSummary',
                url: '/DataSummary',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<dongfeng-nav-bar type="3"></dongfeng-nav-bar>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'GlobalSearch',
                url: '/GlobalSearch',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<dongfeng-nav-bar type="4"></dongfeng-nav-bar>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

            $stateProvider.state({
                name: 'RiskPanel',
                url: '/RiskPanel',
                cache: false,
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                                        function ($scope, $stateParams, appTranslation) {
                                            appTranslation.load([appTranslation.vat]);
                                        }],
                        template: '<dongfeng-nav-bar type="5"></dongfeng-nav-bar>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });
        }]);