invoiceModule.controller('outputInvoiceInfrastructureController', ['$scope', '$log', '$q', '$timeout', 'loginContext',
    '$translate', '$location', 'templateGroupService', 'citSessionService', 'vatReportService', '$state', 'vatSessionService',
function ($scope, $log, $q, $timeout, loginContext, $translate, $location, templateGroupService, citSessionService, vatReportService, $state, vatSessionService) {
    'use strict';
    $log.debug('outputInvoiceInfrastructureController.ctor()...');

    vatSessionService.clearSelectProject();

    var loadInvoiceMenu = function (permissionMap) {
        $scope.groups = [];
        var tempPermission = constant.vatPermission.outputInvoice;

        var outputInvoiceManagement = {
            id: '0',
            name: $translate.instant('OutputInvoiceManagement'),

            isExpand: true,
            children: [
            ]
        };

        if (permissionMap[tempPermission.importVehicelCase.queryCode]) {
            outputInvoiceManagement.children.push({ id: '1', name: $translate.instant('VehicleCaseIssuing'), sref: '.imported' });
        }

        if (permissionMap[tempPermission.bdInvoice.queryCode]) {
            outputInvoiceManagement.children.push({ id: '2', name: $translate.instant('EditFapiaoDetails'), sref: '.outputInvoiceEdit', className: 'sub-menu' });
            outputInvoiceManagement.children.push({ id: '3', name: $translate.instant('IssuedInvoicelist') + ' - ' + $translate.instant('BDView'), sref: '.issuedInvoiceBdView' });
            outputInvoiceManagement.children.push({ id: '8', name: $translate.instant('BDVinView'), sref: '.bdViewByVin' });
        }

        if (permissionMap[tempPermission.gdInvoice.queryCode]) {
            outputInvoiceManagement.children.push({ id: '5', name: $translate.instant('IssuedInvoicelist') + ' - ' + $translate.instant('GDView'), sref: '.issuedInvoiceGdView' });
        }


        if (permissionMap[tempPermission.gdShipment.queryCode]) {
            outputInvoiceManagement.children.push({ id: '6', name: $translate.instant('ImportShipmentListGd'), sref: '.importShipmentList', className: 'sub-menu' });
        }

        if (permissionMap[tempPermission.taxControlDisk.queryCode]) {
            outputInvoiceManagement.children.push({ id: '4', name: $translate.instant('TaxControlDisk') + ' - ' + $translate.instant('View'), sref: '.taxControlDisk' });
        }

        if (permissionMap[tempPermission.gdInvoice.queryCode]) {
            outputInvoiceManagement.children.push({ id: '7', name: $translate.instant('IssuedInvoiceSpecial'), sref: '.issuedInvoiceSpecial' });
            outputInvoiceManagement.children.push({ id: '8', name: $translate.instant('GDVinView'), sref: '.GDViewByVIN' });
        }


        if (outputInvoiceManagement.children && outputInvoiceManagement.children.length > 0) {
            $scope.groups.push(outputInvoiceManagement);
        }

        var reconciliationConfigGroup = {
            id: '1',
            name: $translate.instant('ReconciliationConfig'),

            isExpand: false,
            children: [

            ]
        };

        if (permissionMap[tempPermission.outputReconciliationOverview.queryCode]) {
            reconciliationConfigGroup.children.push({ id: '9', name: $translate.instant('OutputReconciliationOverview'), sref: '.outputReconciliationOverview' });
        }

        if (permissionMap[tempPermission.reconciliationConfig.queryCode]) {
            reconciliationConfigGroup.children.push({ id: '10', name: $translate.instant('OutputReconciliationConfiguration'), sref: '.outputReconciliationConfiguration' });
        }

        if (reconciliationConfigGroup.children && reconciliationConfigGroup.children.length > 0) {
            $scope.groups.push(reconciliationConfigGroup);
        }
    };

    var toggleGroup = function (group) {
        group.isExpand = !group.isExpand;
    };

    $scope.broadCastMenuClickEvent = function (sref) {
        if (sref.indexOf('issuedInvoiceBdView') > -1) {
            $scope.$broadcast('teslaOutputInvoiceMenuClick', {});
        }
        return true;
    };


    //检查用户机构权限
    var checkUserOrganizationPermissionList = function () {
        var list = [];
        var tempPermission = constant.vatPermission.outputInvoice;
        list.push(tempPermission.importVehicelCase.queryCode);
        list.push(tempPermission.bdInvoice.queryCode);
        list.push(tempPermission.gdInvoice.queryCode);
        list.push(tempPermission.gdShipment.queryCode);
        list.push(tempPermission.reconciliationConfig.queryCode);
        list.push(tempPermission.outputReconciliationOverview.queryCode);
        list.push(tempPermission.taxControlDisk.queryCode);
        $scope.$root.checkUserPermissionList(list).success(function (data) {

            console.log(JSON.stringify(data));
            var permissionMap = data;
            loadInvoiceMenu(permissionMap);
        });
    };


    (function initialize() {
        checkUserOrganizationPermissionList();
        $scope.expend = true;
        $scope.toggleGroup = toggleGroup;
    })();

}]);