Example #1
0
        protected override void InitializePropertiesForViewing()
        {
            using (var _appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
            {
                SeoKeywords =
                    _appConfigRepository.SeoUrlKeywords.Where(
                        keyword =>
                        keyword.KeywordValue.Equals(InnerItem.Code) && keyword.KeywordType.Equals((int)SeoUrlKeywordTypes.Item))
                    .ToList();
            }

            InnerItemCatalogLanguages.ForEach(locale =>
            {
                if (!SeoKeywords.Any(keyword => keyword.Language.Equals(locale)))
                {
                    var newSeoKeyword = new SeoUrlKeyword {
                        Language = locale, IsActive = true, KeywordType = (int)SeoUrlKeywordTypes.Item, KeywordValue = InnerItem.Code, Created = DateTime.UtcNow
                    };
                    SeoKeywords.Add(newSeoKeyword);
                }
            });

            // filter values by locale
            SeoLocalesFilterCommand.Execute(InnerItem.Catalog.DefaultLanguage);
        }
Example #2
0
        private bool ValidateKeywords()
        {
            var retVal   = true;
            var keywords = SeoKeywords.Where(key => !string.IsNullOrEmpty(key.Keyword)).ToList();

            if (keywords.Any())
            {
                using (var appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
                {
                    keywords.ForEach(keyword =>
                    {
                        if (retVal)
                        {
                            var count = appConfigRepository.SeoUrlKeywords
                                        .Where(x =>
                                               x.SeoUrlKeywordId != keyword.SeoUrlKeywordId &&
                                               x.Keyword == keyword.Keyword && x.KeywordType == keyword.KeywordType && x.Language == keyword.Language && x.IsActive == keyword.IsActive)
                                        .Count();

                            if (count > 0)
                            {
                                keyword.SetError("Keyword", "Item with the same Keyword and Language already exists", true);
                                CurrentSeoKeyword = keyword;
                                RaiseSeoLocalesFilter(keyword.Language);
                                retVal = false;
                            }
                        }
                    });
                }
            }

            return(retVal);
        }
        private bool ValidateKeywords()
        {
            var retVal   = true;
            var keywords = SeoKeywords.Where(key => !string.IsNullOrEmpty(key.Keyword)).ToList();

            if (keywords.Any())
            {
                using (var appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
                {
                    keywords.ForEach(keyword =>
                    {
                        if (retVal)
                        {
                            var count = appConfigRepository.SeoUrlKeywords
                                        .Where(x =>
                                               !x.SeoUrlKeywordId.Equals(keyword.SeoUrlKeywordId, StringComparison.InvariantCultureIgnoreCase) &&
                                               x.Keyword.Equals(keyword.Keyword, StringComparison.InvariantCultureIgnoreCase) && x.KeywordType == keyword.KeywordType && x.Language.Equals(keyword.Language, StringComparison.InvariantCultureIgnoreCase) && x.IsActive)
                                        .Count();

                            if (count > 0)
                            {
                                keyword.SetError("Keyword", string.Format("{0} with the same Keyword and Language already exists".Localize(), _keywordType.ToString()), false);
                                if (keyword.SeoUrlKeywordId.Equals(CurrentSeoKeyword.SeoUrlKeywordId, StringComparison.InvariantCultureIgnoreCase))
                                {
                                    OnPropertyChanged("CurrentSeoKeyword");
                                }
                                retVal = false;
                            }
                        }
                    });
                }
            }

            return(retVal);
        }
        protected override void InitializePropertiesForViewing()
        {
            using (var _appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
            {
                SeoKeywords =
                    _appConfigRepository.SeoUrlKeywords.Where(
                        keyword =>
                        keyword.KeywordValue.Equals(InnerItem.Code) && keyword.KeywordType.Equals((int)SeoUrlKeywordTypes.Category))
                    .ToList();
            }

            var innerItemCatalog = _parentCatalog as catalogModel.Catalog;

            if (innerItemCatalog == null)
            {
                using (var storeRepository = _storeRepositoryFactory.GetRepositoryInstance())
                {
                    var languages =
                        storeRepository.Stores.Where(store => store.Catalog == _parentCatalog.CatalogId)
                        .Expand(store => store.Languages).ToList();

                    var customComparer = new PropertyComparer <StoreLanguage>("LanguageCode");
                    var lang           = languages.SelectMany(x => x.Languages).Distinct(customComparer);

                    InnerItemCatalogLanguages = new List <string>();
                    if (lang.Any())
                    {
                        foreach (var l in lang)
                        {
                            InnerItemCatalogLanguages.Add(l.LanguageCode);
                        }
                    }
                }
            }

            InnerItemCatalogLanguages.ForEach(locale =>
            {
                if (!SeoKeywords.Any(keyword => keyword.Language.Equals(locale)))
                {
                    SeoKeywords.Add(CreateSeoUrlKeyword(locale));
                }
            });

            // filter values by locale
            SeoLocalesFilterCommand.Execute(_parentCatalog.DefaultLanguage);
        }
        private void RaiseSeoLocalesFilter(string locale)
        {
            //detach property changed
            if (CurrentSeoKeyword != null)
            {
                CurrentSeoKeyword.PropertyChanged -= CurrentSeoKeyword_PropertyChanged;
            }

            CurrentSeoKeyword =
                SeoKeywords.FirstOrDefault(keyword => keyword.Language.Equals(locale, StringComparison.InvariantCultureIgnoreCase) && keyword.IsActive);

            if (CurrentSeoKeyword == null)
            {
                CurrentSeoKeyword = CreateSeoUrlKeyword(locale);
                SeoKeywords.Add(CurrentSeoKeyword);
            }

            //attach property changed
            CurrentSeoKeyword.PropertyChanged += CurrentSeoKeyword_PropertyChanged;

            FilterSeoLanguage = locale;
        }
        public void UpdateSeoKeywords()
        {
            //if any SEO keyword modified update or add it
            if (_seoModified)
            {
                using (var appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
                {
                    SeoKeywords.ForEach(keyword =>
                    {
                        if (!string.IsNullOrEmpty(keyword.Keyword))
                        {
                            var originalKeyword =
                                appConfigRepository.SeoUrlKeywords.Where(
                                    seoKeyword => true &&
                                    seoKeyword.SeoUrlKeywordId.Equals(keyword.SeoUrlKeywordId))
                                .FirstOrDefault();

                            if (originalKeyword != null)
                            {
                                originalKeyword.InjectFrom <CloneInjection>(keyword);
                                appConfigRepository.Update(originalKeyword);
                            }
                            else
                            {
                                var addKeyword = CreateSeoUrlKeyword(keyword.Language);
                                addKeyword.InjectFrom(keyword);
                                appConfigRepository.Add(addKeyword);
                            }
                        }
                    });
                    appConfigRepository.UnitOfWork.Commit();
                }

                OnPropertyChanged("NavigateUri");
                _seoModified = false;
            }
        }
Example #7
0
        private void RaiseSeoLocalesFilter(string locale)
        {
            //detach property changed
            if (CurrentSeoKeyword != null)
            {
                CurrentSeoKeyword.PropertyChanged -= CurrentSeoKeyword_PropertyChanged;
            }

            CurrentSeoKeyword =
                SeoKeywords.FirstOrDefault(keyword => keyword.Language.Equals(locale, StringComparison.InvariantCultureIgnoreCase) && keyword.IsActive);

            if (CurrentSeoKeyword == null)
            {
                CurrentSeoKeyword = new SeoUrlKeyword {
                    Language = locale, IsActive = true, KeywordType = (int)SeoUrlKeywordTypes.Item, KeywordValue = InnerItem.Code, Created = DateTime.UtcNow
                };
                SeoKeywords.Add(CurrentSeoKeyword);
            }

            FilterSeoLanguage = locale;

            //attach property changed
            CurrentSeoKeyword.PropertyChanged += CurrentSeoKeyword_PropertyChanged;
        }
Example #8
0
        public void UpdateSeoKeywords()
        {
            //if item code changed - need to update SEO KeywordValue property, if any
            if (!OriginalItem.Code.Equals(InnerItem.Code))
            {
                if (SeoKeywords.Any(kw => !string.IsNullOrEmpty(kw.Keyword)))
                {
                    if (CurrentSeoKeyword != null)
                    {
                        CurrentSeoKeyword.PropertyChanged -= CurrentSeoKeyword_PropertyChanged;
                    }

                    _seoModified = true;
                    SeoKeywords.ForEach(keyword =>
                    {
                        if (!string.IsNullOrEmpty(keyword.Keyword))
                        {
                            keyword.KeywordValue = InnerItem.Code;
                        }
                    });

                    if (CurrentSeoKeyword != null)
                    {
                        CurrentSeoKeyword.PropertyChanged -= CurrentSeoKeyword_PropertyChanged;
                    }
                }
            }

            //if any SEO keyword modified update or add it
            if (_seoModified)
            {
                using (var appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
                {
                    SeoKeywords.ForEach(keyword =>
                    {
                        if (!string.IsNullOrEmpty(keyword.Keyword))
                        {
                            var originalKeyword =
                                appConfigRepository.SeoUrlKeywords.Where(
                                    seoKeyword => true &&
                                    seoKeyword.SeoUrlKeywordId.Equals(keyword.SeoUrlKeywordId))
                                .FirstOrDefault();

                            if (originalKeyword != null)
                            {
                                originalKeyword.InjectFrom <CloneInjection>(keyword);
                                appConfigRepository.Update(originalKeyword);
                            }
                            else
                            {
                                var addKeyword = _appConfigEntityFactory.CreateEntity <SeoUrlKeyword>();
                                addKeyword.InjectFrom(keyword);
                                appConfigRepository.Add(addKeyword);
                            }
                        }
                    });
                    appConfigRepository.UnitOfWork.Commit();
                }
                OnPropertyChanged("NavigateUri");
                _seoModified = false;
            }
        }
Example #9
0
 public void UpdateKeywordValueCode(string newCode)
 {
     SeoKeywords.ForEach(x => x.KeywordValue = newCode);
 }