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); }
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; } }
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; }
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; } }
public void UpdateKeywordValueCode(string newCode) { SeoKeywords.ForEach(x => x.KeywordValue = newCode); }