public JsonResult GetShows(int? id) { Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress); if (id == null) id = 0; var cache = DataCache.Cache; string jsonString = String.Empty; SynapseCategory cat = null; var countryCode = MyUtility.GetCurrentCountryCodeOrDefault(); string cacheKey = "SYNAPGTSHOWS:0;C:" + id + ";CC:" + countryCode; try { jsonString = (string)cache[cacheKey]; } catch (Exception) { } if (String.IsNullOrEmpty(jsonString)) { cat = new SynapseCategory(); var context = new IPTV2Entities(); var offering = context.Offerings.FirstOrDefault(o => o.OfferingId == GlobalConfig.offeringId); var service = offering.Services.FirstOrDefault(s => s.PackageId == GlobalConfig.serviceId); var categoryClass = context.CategoryClasses.FirstOrDefault(c => c.CategoryId == (int)id && c.StatusId == GlobalConfig.Visible); if (categoryClass != null) { if (categoryClass is Category) { Category category = (Category)categoryClass; SortedSet<int> showIds = service.GetAllMobileShowIds(countryCode, category); ViewBag.Category = category.Description; int[] setofShows = showIds.ToArray(); var list = context.CategoryClasses.Where(c => setofShows.Contains(c.CategoryId) && c.StatusId == GlobalConfig.Visible).OrderBy(c => c.CategoryName).ThenBy(c => c.StartDate).ToList(); var random = list.OrderBy(x => System.Guid.NewGuid()).FirstOrDefault(); cat.id = category.CategoryId; cat.name = category.Description; string featuredImg = String.IsNullOrEmpty(random.ImagePoster) ? GlobalConfig.AssetsBaseUrl + GlobalConfig.BlankGif : String.Format("{0}{1}/{2}", GlobalConfig.ShowImgPath, random.CategoryId.ToString(), random.ImagePoster); string featuredBanner = String.IsNullOrEmpty(random.ImageBanner) ? GlobalConfig.AssetsBaseUrl + GlobalConfig.BlankGif : String.Format("{0}{1}/{2}", GlobalConfig.ShowImgPath, random.CategoryId.ToString(), random.ImageBanner); SynapseShow feature = new SynapseShow() { id = random.CategoryId, name = random.Description, blurb = random.Blurb, image = featuredImg, banner = featuredBanner, dateairedstr = random.StartDate.Value.ToString("yyyy") }; cat.feature = feature; List<SynapseShow> shows = new List<SynapseShow>(); foreach (var item in list) { if (item is Show) { string img = String.IsNullOrEmpty(item.ImagePoster) ? GlobalConfig.AssetsBaseUrl + GlobalConfig.BlankGif : String.Format("{0}{1}/{2}", GlobalConfig.ShowImgPath, item.CategoryId.ToString(), item.ImagePoster); string banner = String.IsNullOrEmpty(item.ImageBanner) ? GlobalConfig.AssetsBaseUrl + GlobalConfig.BlankGif : String.Format("{0}{1}/{2}", GlobalConfig.ShowImgPath, item.CategoryId.ToString(), item.ImageBanner); SynapseShow show = new SynapseShow() { id = item.CategoryId, name = item.Description, blurb = item.Blurb, image = img, banner = banner, dateairedstr = item.StartDate.Value.ToString("yyyy") }; shows.Add(show); } } cat.shows = shows; } } var cacheDuration = new TimeSpan(0, GlobalConfig.SynapseGenericCacheDuration, 0); jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(cat); cache.Put(cacheKey, jsonString, cacheDuration); } else cat = Newtonsoft.Json.JsonConvert.DeserializeObject<SynapseCategory>(jsonString); return Json(cat, JsonRequestBehavior.AllowGet); }
private void FillCategoriesWithShows(IPTV2Entities context, TimeSpan cacheDuration, IEnumerable<int> categoryIds, int offeringId, int serviceId) { var countries = context.Countries; foreach (int categoryId in categoryIds) { try { foreach (var cx in countries) { string cacheKey = "SYNAPGTSHOWS:0;C:" + categoryId + ";CC:" + cx.Code; SynapseCategory cat = new SynapseCategory(); var offering = context.Offerings.FirstOrDefault(o => o.OfferingId == offeringId); var service = offering.Services.FirstOrDefault(s => s.PackageId == serviceId); var categoryClass = context.CategoryClasses.FirstOrDefault(c => c.CategoryId == categoryId && c.StatusId == Visible); if (categoryClass != null) { if (categoryClass is Category) { Category category = (Category)categoryClass; SortedSet<int> showIds = service.GetAllMobileShowIds(cx.Code, category); int[] setofShows = showIds.ToArray(); var list = context.CategoryClasses.Where(c => setofShows.Contains(c.CategoryId) && c.StatusId == Visible).OrderBy(c => c.CategoryName).ThenBy(c => c.StartDate).ToList(); var random = list.OrderBy(x => System.Guid.NewGuid()).FirstOrDefault(); cat.id = category.CategoryId; cat.name = category.Description; string featuredImg = String.IsNullOrEmpty(random.ImagePoster) ? AssetsBaseUrl + BlankGif : String.Format("{0}{1}/{2}", ShowImgPath, random.CategoryId.ToString(), random.ImagePoster); string featuredBanner = String.IsNullOrEmpty(random.ImageBanner) ? AssetsBaseUrl + BlankGif : String.Format("{0}{1}/{2}", ShowImgPath, random.CategoryId.ToString(), random.ImageBanner); SynapseShow feature = new SynapseShow() { id = random.CategoryId, name = random.Description, blurb = random.Blurb, image = featuredImg, banner = featuredBanner, dateairedstr = random.StartDate.Value.ToString("yyyy") }; cat.feature = feature; List<SynapseShow> shows = new List<SynapseShow>(); foreach (var item in list) { if (item is Show) { string img = String.IsNullOrEmpty(item.ImagePoster) ? AssetsBaseUrl + BlankGif : String.Format("{0}{1}/{2}", ShowImgPath, item.CategoryId.ToString(), item.ImagePoster); string banner = String.IsNullOrEmpty(item.ImageBanner) ? AssetsBaseUrl + BlankGif : String.Format("{0}{1}/{2}", ShowImgPath, item.CategoryId.ToString(), item.ImageBanner); SynapseShow show = new SynapseShow() { id = item.CategoryId, name = item.Description, blurb = item.Blurb, image = img, banner = banner, dateairedstr = item.StartDate.Value.ToString("yyyy") }; shows.Add(show); } } cat.shows = shows; } } DataCache.Cache.Put(cacheKey, cat, cacheDuration); } } catch (Exception e) { Trace.TraceError("FillCategoryWithShows Cache - Error! " + e.Message); } } }