/// <reference path="../../../Scripts/underscore.js" />
/// <reference path="../../common/utils/enums.js" />
/// <reference path="../nav-bar-util.js" />

// AppNavBarController controller for the navigation bar of the application. This controller is responsible for 
// manage the different types of the tabs and corresponding menus.
frameworkModule.controller('appSideBarController', ['$scope', '$log', 'menuService', '$window', 'loginContext', 'userService', '$timeout',
    function ($scope, $log, menuService, $window, loginContext, userService, $timeout) {
        'use strict';
        $log.debug('appSideBarController.ctor()...');

        userService.getUserPermission(loginContext.userName).success(function (data) {
            $timeout(function () {
                menuService.getMenusForDisplay(1, loginContext.userId).success(function (menuData) {
                    $scope.menuData = menuData;
                });
            }, 500);
            
        });


        var getMenuItem = function (row, isAdmin, navigationUrlList) {
            if (!row.isVisible) {
                return null;
            }
            if (row.subMenus && row.subMenus.length > 0) {

                // 基础数据维护菜单特殊处理
                if (row.id === constant.BasicDataManageMenuID) {

                    if (!isAdmin) {
                        var subMenus = _.find(row.subMenus, function (num) {
                            return navigationUrlList.indexOf(num.navigationUrl) > -1;
                        });

                        if (subMenus && navigationUrlList.indexOf(row.navigationUrl) === -1) {

                            // 设置基础数据菜单 默认url地址

                            if (navigationUrlList.indexOf(constant.basicDataUrl.businessUnit) > -1) {
                                row.navigationUrl = constant.basicDataUrl.businessUnit;
                            } else if (navigationUrlList.indexOf(constant.basicDataUrl.regionManage) > -1) {
                                row.navigationUrl = constant.basicDataUrl.regionManage;
                            } else if (navigationUrlList.indexOf(constant.basicDataUrl.enterpriseAccountManage) > -1) {
                                row.navigationUrl = constant.basicDataUrl.enterpriseAccountManage;
                            } else if (navigationUrlList.indexOf(constant.basicDataUrl.customerListManage) > -1) {
                                row.navigationUrl = constant.basicDataUrl.customerListManage;
                            }
                        }

                    }

                    row.subMenus = [];

                } else {
                    var menuList = [];
                    row.subMenus.forEach(function (menu) {
                        var temp = getMenuItem(menu, isAdmin, navigationUrlList);
                        if (temp) {
                            menuList.push(temp);
                        }
                    });

                    row.subMenus = menuList;

                }
            }

            // 系统管理就没有地址
            if (!row.navigationUrl && row.subMenus && row.subMenus.length > 0) {
                return row;
            }

            if (isAdmin || (navigationUrlList && navigationUrlList.indexOf(row.navigationUrl) > -1)) {
                return row;
            }
            return null;
        };

        //var apiToken = $cookieStore.get("AtmsApiToken");
        //$scope.loginUser = apiToken.user_name;

        $scope.loginUser = loginContext.userName;
        $scope.specialUser = $scope.loginUser.toLowerCase();

        $scope.logout = function () {
            $window.location.href = '/Account/Logout';
        };

        $scope.convertTo2BitNumber = function (number) {
            var str = "" + number;
            var pad = "00";
            return pad.substring(0, pad.length - str.length) + str;
        };

        (function initialize() {
            $log.debug('appSideBarController.initialize()...');

        })();
    }
]);