コード例 #1
0
        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);
        }
コード例 #2
0
        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); }
            }
        }