private MenuModel GenerateMenuModel(IEnumerable <MenuLinkItem> items)
        {
            if (_sessionCache.TryGet(_key, out MenuModel cachedMenuModel))
            {
                return
                    (cachedMenuModel);
            }

            var menuModel = new MenuModel();

            // Проходим по дереву до подменю и генерируем ссылку, на которую будет ссылаться элемент главного меню
            menuModel.MenuItems.AddRange(items
                                         .Where(c => c.ParentId == 0 && (!c.Roles.Any() ||
                                                                         c.Roles.Any(r => _userService.CurrentUserRole == r)))
                                         .Select(t => GenerateSubMenuModel(items, t)).Where(t => t != null));

            _sessionCache.AddOrReplace(_key, menuModel);

            return(menuModel);
        }