Ejemplo n.º 1
0
        /// <summary>
        /// Prepare nopCommerce news model
        /// </summary>
        /// <returns>nopCommerce news model</returns>
        public virtual NopCommerceNewsModel PrepareNopCommerceNewsModel()
        {
            var model = new NopCommerceNewsModel
            {
                HideAdvertisements = _adminAreaSettings.HideAdvertisementsOnAdminArea
            };

            var rssData = _cacheManager.Get(ModelCacheEventConsumer.OFFICIAL_NEWS_MODEL_KEY, () =>
            {
                //compose nopCommerce news RSS feed URL
                var nopCommerceNewsUrl = string.Format(NOP_COMMERCE_NEWS_URL,
                                                       NopVersion.CurrentVersion,
                                                       _webHelper.IsLocalRequest(_httpContextAccessor.HttpContext.Request),
                                                       _adminAreaSettings.HideAdvertisementsOnAdminArea,
                                                       _webHelper.GetStoreLocation()).ToLowerInvariant();

                //create request
                var request = WebRequest.Create(nopCommerceNewsUrl);

                //specify request timeout
                request.Timeout = 5000;

                //try to get nopCommerce news RSS feed
                using (var response = request.GetResponse())
                    using (var reader = XmlReader.Create(response.GetResponseStream()))
                        return(RssFeed.Load(reader));
            });

            for (var i = 0; i < rssData.Items.Count; i++)
            {
                var item     = rssData.Items.ElementAt(i);
                var newsItem = new NopCommerceNewsDetailsModel
                {
                    Title       = item.TitleText,
                    Summary     = item.ContentText,
                    Url         = item.Url.OriginalString,
                    PublishDate = item.PublishDate
                };
                model.Items.Add(newsItem);

                //has new items?
                if (i == 0)
                {
                    var firstRequest = string.IsNullOrEmpty(_adminAreaSettings.LastNewsTitleAdminArea);
                    if (_adminAreaSettings.LastNewsTitleAdminArea != newsItem.Title)
                    {
                        _adminAreaSettings.LastNewsTitleAdminArea = newsItem.Title;
                        _settingService.SaveSetting(_adminAreaSettings);

                        if (!firstRequest)
                        {
                            //new item
                            model.HasNewItems = true;
                        }
                    }
                }
            }

            return(model);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Prepare nopCommerce news model
        /// </summary>
        /// <returns>nopCommerce news model</returns>
        public virtual NopCommerceNewsModel PrepareNopCommerceNewsModel()
        {
            var model = new NopCommerceNewsModel
            {
                HideAdvertisements = _adminAreaSettings.HideAdvertisementsOnAdminArea
            };

            var rssData = _cacheManager.Get(NopModelCacheDefaults.OfficialNewsModelKey, () => _nopHttpClient.GetNewsRssAsync().Result);

            for (var i = 0; i < rssData.Items.Count; i++)
            {
                var item     = rssData.Items.ElementAt(i);
                var newsItem = new NopCommerceNewsDetailsModel
                {
                    Title       = item.TitleText,
                    Summary     = item.ContentText,
                    Url         = item.Url.OriginalString,
                    PublishDate = item.PublishDate
                };
                model.Items.Add(newsItem);

                //has new items?
                if (i == 0)
                {
                    var firstRequest = string.IsNullOrEmpty(_adminAreaSettings.LastNewsTitleAdminArea);
                    if (_adminAreaSettings.LastNewsTitleAdminArea != newsItem.Title)
                    {
                        _adminAreaSettings.LastNewsTitleAdminArea = newsItem.Title;
                        _settingService.SaveSetting(_adminAreaSettings);

                        if (!firstRequest)
                        {
                            //new item
                            model.HasNewItems = true;
                        }
                    }
                }
            }

            return(model);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Prepare nopCommerce news model
        /// </summary>
        /// <returns>nopCommerce news model</returns>
        public virtual NopCommerceNewsModel PrepareNopCommerceNewsModel()
        {
            var model = new NopCommerceNewsModel
            {
                HideAdvertisements = _adminAreaSettings.HideAdvertisementsOnAdminArea
            };

            try
            {
                //try to get news RSS feed
                var rssData = _staticCacheManager.Get(_cacheKeyService.PrepareKeyForDefaultCache(NopModelCacheDefaults.OfficialNewsModelKey), () =>
                {
                    try
                    {
                        return(_nopHttpClient.GetNewsRssAsync().Result);
                    }
                    catch (AggregateException exception)
                    {
                        //rethrow actual excepion
                        throw exception.InnerException;
                    }
                });

                for (var i = 0; i < rssData.Items.Count; i++)
                {
                    var item     = rssData.Items.ElementAt(i);
                    var newsItem = new NopCommerceNewsDetailsModel
                    {
                        Title       = item.TitleText,
                        Summary     = item.ContentText,
                        Url         = item.Url.OriginalString,
                        PublishDate = item.PublishDate
                    };
                    model.Items.Add(newsItem);

                    //has new items?
                    if (i != 0)
                    {
                        continue;
                    }

                    var firstRequest = string.IsNullOrEmpty(_adminAreaSettings.LastNewsTitleAdminArea);
                    if (_adminAreaSettings.LastNewsTitleAdminArea == newsItem.Title)
                    {
                        continue;
                    }

                    _adminAreaSettings.LastNewsTitleAdminArea = newsItem.Title;
                    _settingService.SaveSetting(_adminAreaSettings);

                    //new item
                    if (!firstRequest)
                    {
                        model.HasNewItems = true;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("No access to the news. Website apratim.azurewebsites.net is not available.", ex);
            }

            return(model);
        }