public PartialViewResult CreateMenu()
        {
            List<MyMainMenu> mainmenu = new List<MyMainMenu>();
            var menuItemList = GlobalConfig.MainMenuItems.Split(',');
            foreach (string item in menuItemList)
            {
                MyMainMenu menuItem = new MyMainMenu();
                menuItem.name = item;
                menuItem.menu = BuildMenuGroup(item);
                mainmenu.Add(menuItem);
            }

            return PartialView("_Menu", mainmenu);
        }
        public JsonResult GetSiteMenu()
        {
            Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress);
            int[] mainMenuIds = { 736, 738, 737 };
            List<MyMainMenu> siteMenus = null;
            string jsonString = String.Empty;
            var cache = DataCache.Cache;
            string cacheKey = "SYNGETSITEMENU:0:";
            try { jsonString = (string)cache[cacheKey]; }
            catch (Exception) { }
            if (String.IsNullOrEmpty(jsonString))
            {
                siteMenus = new List<MyMainMenu>();
                foreach (int mainMenuId in mainMenuIds)
                {
                    var context = new IPTV2Entities();
                    Category mainCategory = (Category)context.CategoryClasses.FirstOrDefault(c => c.CategoryId == mainMenuId);
                    List<MyMenu> fullMenu = new List<MyMenu>();
                    string id = String.Format("{0}MenuIds", mainCategory.Description);
                    string menuId = ConfigurationManager.AppSettings[id];
                    var menuids = MyUtility.StringToIntList(menuId);

                    var features = context.Features.Where(f => menuids.Contains(f.FeatureId) && f.StatusId == GlobalConfig.Visible).ToList();

                    Dictionary<int, Feature> d = features.ToDictionary(x => x.FeatureId);
                    List<Feature> ordered = new List<Feature>();
                    foreach (var i in menuids)
                    {
                        if (d.ContainsKey(i))
                            ordered.Add(d[i]);
                    }
                    //var ordered = menuids.Select(i => d[i]).ToList();

                    foreach (var feature in ordered)
                    {
                        var temp = feature.Description.Split('|');

                        var featureItems = feature.FeatureItems.Where(f => f.MobileStatusId == GlobalConfig.Visible);
                        List<MyMenuShows> mms = new List<MyMenuShows>();
                        foreach (var f in featureItems)
                        {
                            if (f is ShowFeatureItem)
                            {
                                ShowFeatureItem sft = (ShowFeatureItem)f;
                                var category = context.CategoryClasses.FirstOrDefault(c => c.CategoryId == sft.CategoryId);
                                if (category != null)
                                {
                                    if (category is Show)
                                    {
                                        Show show = sft.Show;
                                        string img = String.IsNullOrEmpty(show.ImagePoster) ? GlobalConfig.AssetsBaseUrl + GlobalConfig.BlankGif : String.Format("{0}{1}/{2}", GlobalConfig.ShowImgPath, show.CategoryId.ToString(), show.ImagePoster);
                                        MyMenuShows m = new MyMenuShows() { name = show.Description, id = show.CategoryId, image = img };
                                        mms.Add(m);
                                    }
                                }
                            }
                        }

                        MyMenu item = new MyMenu()
                        {
                            name = temp[0],
                            id = Convert.ToInt32(temp[1]),
                            shows = mms
                        };

                        if (item.shows.Count > 0)
                            fullMenu.Add(item);
                    }
                    MyMainMenu siteMenu = new MyMainMenu()
                    {
                        id = mainCategory.CategoryId,
                        name = mainCategory.Description,
                        menu = fullMenu
                    };
                    siteMenus.Add(siteMenu);
                }

                var cacheDuration = new TimeSpan(0, GlobalConfig.MenuCacheDuration, 0);
                jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(siteMenus);
                cache.Put(cacheKey, jsonString, cacheDuration);
            }
            else
                siteMenus = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyMainMenu>>(jsonString);
            return Json(siteMenus, JsonRequestBehavior.AllowGet);
        }
        private void FillSiteMenu(IPTV2Entities context, TimeSpan cacheDuration)
        {
            int[] mainMenuIds = { 736, 738, 737 };
            string cacheKey = "SYNGETSITEMENU:0:";
            try
            {
                List<MyMainMenu> siteMenus = new List<MyMainMenu>();
                foreach (int mainMenuId in mainMenuIds)
                {
                    Category mainCategory = (Category)context.CategoryClasses.FirstOrDefault(c => c.CategoryId == mainMenuId);
                    List<MyMenu> fullMenu = new List<MyMenu>();
                    string id = String.Format("{0}MenuIds", mainCategory.Description);
                    string menuId = RoleEnvironment.GetConfigurationSettingValue(id);
                    var menuids = StringToIntList(menuId);
                    var features = context.Features.Where(f => menuids.Contains(f.FeatureId) && f.StatusId == Visible).ToList();

                    Dictionary<int, Feature> d = features.ToDictionary(x => x.FeatureId);
                    List<Feature> ordered = new List<Feature>();
                    foreach (var i in menuids)
                    {
                        if (d.ContainsKey(i))
                            ordered.Add(d[i]);
                    }

                    foreach (var feature in ordered)
                    {
                        var temp = feature.Description.Split('|');

                        var featureItems = feature.FeatureItems.Where(f => f.MobileStatusId == Visible);
                        List<MyMenuShows> mms = new List<MyMenuShows>();
                        foreach (var f in featureItems)
                        {
                            if (f is ShowFeatureItem)
                            {
                                ShowFeatureItem sft = (ShowFeatureItem)f;
                                var category = context.CategoryClasses.FirstOrDefault(c => c.CategoryId == sft.CategoryId);
                                if (category != null)
                                {
                                    if (category is Show)
                                    {
                                        Show show = sft.Show;
                                        string img = String.IsNullOrEmpty(show.ImagePoster) ? AssetsBaseUrl + BlankGif : String.Format("{0}{1}/{2}", ShowImgPath, show.CategoryId.ToString(), show.ImagePoster);
                                        MyMenuShows m = new MyMenuShows() { name = show.Description, id = show.CategoryId, image = img };
                                        mms.Add(m);
                                    }
                                }
                            }
                        }
                        MyMenu item = new MyMenu()
                        {
                            name = temp[0],
                            id = Convert.ToInt32(temp[1]),
                            shows = mms
                        };

                        if (item.shows.Count > 0)
                            fullMenu.Add(item);
                    }
                    MyMainMenu siteMenu = new MyMainMenu()
                    {
                        id = mainCategory.CategoryId,
                        name = mainCategory.Description,
                        menu = fullMenu
                    };
                    siteMenus.Add(siteMenu);
                }
                var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(siteMenus);                
                DataCache.Cache.Put(cacheKey, jsonString, cacheDuration);
            }
            catch (Exception) { }
        }