protected override void AfterItemAddSaved(Store item)
        {
            using (var seoRepository = _seoRepository.GetRepositoryInstance())
            {
                var itemName  = ReplaceRestrictedChars(item.Name);
                var checkItem = seoRepository.SeoUrlKeywords.Where(s => s.Keyword.Equals(itemName, StringComparison.InvariantCultureIgnoreCase) &&
                                                                   s.Language.Equals(item.DefaultLanguage, StringComparison.InvariantCultureIgnoreCase) &&
                                                                   s.KeywordType.Equals((int)SeoUrlKeywordTypes.Store)).FirstOrDefault();

                var seo = _seoFactory.CreateEntity <VirtoCommerce.Foundation.AppConfig.Model.SeoUrlKeyword>();
                seo.KeywordValue = item.StoreId;
                seo.Keyword      = checkItem == null ? itemName : "_" + itemName + "_";
                seo.Language     = item.DefaultLanguage;
                seo.IsActive     = true;
                seo.KeywordType  = (int)SeoUrlKeywordTypes.Store;
                seoRepository.Add(seo);
                seoRepository.UnitOfWork.Commit();
            }

            // Open the item when wizard is complete
            var storeViewModel = _storeVmFactory.GetViewModelInstance(new KeyValuePair <string, object>("item", item), new KeyValuePair <string, object>("parent", this));
            var openTracking   = (IOpenTracking)storeViewModel;

            openTracking.OpenItemCommand.Execute();

            base.AfterItemAddSaved(item);
        }
        public virtual void SaveSeoKeywordsChanges()
        {
            //if any SEO keyword modified update or add it
            if (SeoKeywords.Any(x => x.IsChanged))
            {
                using (var appConfigRepository = _appConfigRepositoryFactory.GetRepositoryInstance())
                {
                    SeoKeywords.Where(x => x.IsChanged && x.Validate()).ToList().ForEach(keyword =>
                    {
                        if (string.IsNullOrEmpty(keyword.Keyword))
                        {
                            //redundant true is a workaround for service error
                            var keywordToRemove =
                                appConfigRepository.SeoUrlKeywords.Where(
                                    seoKeyword => true && seoKeyword.SeoUrlKeywordId.Equals(keyword.SeoUrlKeywordId)).FirstOrDefault();
                            if (keywordToRemove != null)
                            {
                                appConfigRepository.Remove(keywordToRemove);
                            }
                        }
                        else
                        {
                            //redundant true is a workaround for service error
                            var originalKeyword =
                                appConfigRepository.SeoUrlKeywords.Where(
                                    seoKeyword => true &&
                                    seoKeyword.SeoUrlKeywordId.Equals(keyword.SeoUrlKeywordId))
                                .FirstOrDefault();

                            if (originalKeyword != null)
                            {
                                originalKeyword.Title               = keyword.Title;
                                originalKeyword.MetaDescription     = keyword.MetaDescription;
                                originalKeyword.Keyword             = keyword.Keyword;
                                originalKeyword.ImageAltDescription = keyword.ImageAltDescription;
                                originalKeyword.KeywordValue        = keyword.KeywordValue;
                                appConfigRepository.Update(originalKeyword);
                            }
                            else
                            {
                                var addKeyword      = _appConfigEntityFactory.CreateEntity <ObjectModel.SeoUrlKeyword>();
                                addKeyword.IsActive = true;
                                addKeyword.InjectFrom(keyword);
                                appConfigRepository.Add(addKeyword);
                            }
                        }
                    });

                    appConfigRepository.UnitOfWork.Commit();
                    SeoKeywords.ForEach(y => y.IsChanged = false);
                    OnPropertyChanged("NavigateUrl");
                }
            }
        }
        private SeoUrlKeyword CreateSeoUrlKeyword(string locale)
        {
            var newSeoKeyword = _appConfigEntityFactory.CreateEntity <SeoUrlKeyword>();

            newSeoKeyword.Language     = locale;
            newSeoKeyword.IsActive     = true;
            newSeoKeyword.KeywordType  = (int)SeoUrlKeywordTypes.Category;
            newSeoKeyword.KeywordValue = InnerItem.Code;
            newSeoKeyword.Created      = DateTime.UtcNow;

            return(newSeoKeyword);
        }
Example #4
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;
            }
        }