Exemplo n.º 1
0
        /// <summary>
        /// Metorda zwracająca klasę zawierającą elementy wyświetlane na stronie wszytskich ofert regionalnych
        /// </summary>
        /// <param name="model">Obiekt klasy RegionalOfferBoxViewModel</param>
        /// <returns>Gotowy model do wyświetlenia na stronie wszystkich artykułów</returns>
        public RegionalOfferBoxViewModel GetRegionalArticleBoxesModel(RegionalOfferBoxViewModel model)
        {
            var _offersNode = _umbracoHelper.TypedContent(model.CurrentUmbracoPageId);

            var _articleList = _offersNode.Children.Where("Visible").Select(q => new ArticleWithFilter(q));

            model.DisplayCount = new RegionalOffers(_offersNode).DisplayCount;

            #region Pobranie filtrów z bazy danych
            //Pobranie aktywnych filtrów z bazy danych
            var _regionFilterItemsFromDB = _dbService.GetAll <RegionDB>("PolRegioRegion", q => q.IsEnabled);

            model.RegionFilter = _regionFilterItemsFromDB.Where(q => q.Id != int.Parse(RegionVariables.all_poland_region_id)).Select(q => new FilterItem()
            {
                Id = q.Id, DisplayText = _umbracoHelper.GetDictionaryValue(q.DictionaryKey)
            }).ToList();
            model.RegionFilter.Insert(0, new FilterItem()
            {
                Id = 0, DisplayText = _umbracoHelper.GetDictionaryValue("News.Placeholder.AllRegions")
            });

            var _filterModel = new NewsFilterStateViewModel()
            {
                NewsRegionFiltr = model.SelectedRegionId
            };
            CookiesExtensions.CreateCookie(CookieVariables.OffersFilterCookie, StringExtensions.Base64Encode(JsonConvert.SerializeObject(_filterModel)));

            #endregion
            if (model.SelectedRegionId != 0)
            {
                _articleList = _articleList.Where(q => q.RegionFiltr.SavedValue != null && JsonConvert.DeserializeObject <IEnumerable <NuPickersSqlDropDownPicker> >(q.RegionFiltr.SavedValue.ToString()).Any(c => c.Key == model.SelectedRegionId.ToString()));
            }

            model.AllNewsCount = _articleList.Count();
            model.ArticleList  = _articleList.Take(model.DisplayCount).Select(q => new OfferBoxModel(q));

            return(model);
        }
Exemplo n.º 2
0
        public NewsPageViewModel GetNewsBoxesModel(NewsPageViewModel model)
        {
            var _newsNode       = _umbracoHelper.TypedContent(model.CurrentUmbracoPageId);
            var _newsList       = _newsNode.Children.Where("Visible").Select(q => new ArticleWithDoubleFiltr(q));
            var _isParamFromUrl = !string.IsNullOrEmpty(model.SelectedTypeFromUrl);

            model.DisplayCount = new Information(_newsNode).DisplayItemsCount;

            #region Pobranie filtrów z bazy danych


            //Pobranie aktywnych filtrów z bazy danych
            var _regionFilterItemsFromDB = _dbService.GetAll <RegionDB>("PolRegioRegion", q => q.IsEnabled);
            var _newsTypeItemsFromDB     = _dbService.GetAll <ArticleTypeDB>("PolRegioArticleType", q => q.IsEnabled);

            model.RegionFilter = _regionFilterItemsFromDB.Select(q => new FilterItem()
            {
                Id = q.Id, DisplayText = _umbracoHelper.GetDictionaryValue(q.DictionaryKey)
            }).ToList();
            model.RegionFilter.Insert(0, new FilterItem()
            {
                Id = 0, DisplayText = _umbracoHelper.GetDictionaryValue("News.Placeholder.AllRegions")
            });
            if (model.NewsTypeFilter == null)
            {
                model.NewsTypeFilter = _newsTypeItemsFromDB.Select(q => new CheckBoxFilterItem()
                {
                    Id = q.Id, DisplayText = _umbracoHelper.GetDictionaryValue(q.DictionaryKey), IsChecked = (_isParamFromUrl && q.Name.ToLower() == model.SelectedTypeFromUrl.ToLower()) || (!_isParamFromUrl && model.SelectedTypeIds != null && model.SelectedTypeIds.Contains(q.Id))
                }).ToList();
            }

            var _selectedTypesId = model.NewsTypeFilter.Where(q => q.IsChecked).Select(q => q.Id);

            #region SetFilterStateCookie

            var _typesId     = _selectedTypesId as IList <int> ?? _selectedTypesId.ToList();
            var _filterModel = new NewsFilterStateViewModel()
            {
                NewsRegionFiltr = model.SelectedRegionId,
                NewsTypeFilter  = _typesId.ToList()
            };
            CookiesExtensions.CreateCookie(CookieVariables.NewsFilterCookie, StringExtensions.Base64Encode(JsonConvert.SerializeObject(_filterModel)));
            #endregion
            #endregion
            if (model.SelectedRegionId != 0)
            {
                var _departmentNode = new OfficeAccordion(_newsNode.AncestorOrSelf(DocumentTypeEnum.location.ToString()).DescendantOrSelf(DocumentTypeEnum.officeAccordion.ToString()));

                if (_departmentNode != null && _departmentNode.AddOffice != null)
                {
                    var _contactRegionList = _departmentNode.AddOffice.Fieldsets.Where(x => x != null && x.Properties.Any() && !x.Disabled).Select(q => new RegionContactBox(q));
                    model.RegionContact = _contactRegionList.Where(q => q.Region != null).FirstOrDefault(q => q.Region.Key == model.SelectedRegionId.ToString());
                }

                _newsList = _newsList.Where(q => q.ArticleRegions.SavedValue != null && JsonConvert.DeserializeObject <IEnumerable <NuPickersSqlDropDownPicker> >(q.ArticleRegions.SavedValue.ToString()).Any(c => c.Key == model.SelectedRegionId.ToString()));
            }
            if (_typesId.Count() > 0)
            {
                _newsList = _newsList.Where(q => q.ArticleCategory.SavedValue != null && _typesId.Contains(int.Parse(JsonConvert.DeserializeObject <IEnumerable <NuPickersSqlDropDownPicker> >(q.ArticleCategory.SavedValue.ToString()).Select(c => c.Key).FirstOrDefault())));
            }

            model.AllNewsCount  = _newsList.Count();
            model.NewsBoxesList = _newsList
                                  .OrderByDescending(q => q.ListArticleDate)
                                  .Take(model.DisplayCount)
                                  .Select(q => new NewsBoxModel(q));

            return(model);
        }