private void SetBlogTags(SitePageEditModel model, SitePage dbModel) { if (model.Tags == null) { return; } var currentTags = model.Tags.Split(','); var currentTagsFormatted = new ArrayList(); foreach (var tag in currentTags) { currentTagsFormatted.Add(tag.UrlKey()); } var currentTagsFormattedArray = currentTagsFormatted.ToArray(); var previousTags = new ArrayList(); foreach (var tag in dbModel.SitePageTags) { previousTags.Add(tag.Tag.Key); } var tagsToRemove = previousTags.ToArray().Except(currentTagsFormatted.ToArray()); this.AddNewTags(model, dbModel, currentTags); this.RemoveDeletedTags(model, tagsToRemove); }
private void AddNewTags(SitePageEditModel model, SitePage dbModel, string[] currentTags) { foreach (var tagName in currentTags) { var tagKey = tagName.UrlKey(); if (string.IsNullOrWhiteSpace(tagKey)) { continue; } if (dbModel.SitePageTags.FirstOrDefault(x => x.Tag.Key == tagKey) == null) { var tagDb = this.tagRepository.Get(tagKey); if (tagDb == null || tagDb.TagId == 0) { this.tagRepository.Create(new Tag { Name = tagName.Trim(), Key = tagKey }); tagDb = this.tagRepository.Get(tagKey); } this.sitePageTagRepository.Create(new SitePageTag() { SitePageId = model.SitePageId, TagId = tagDb.TagId, }); } } }
private SitePage ConvertToDbModel(SitePageEditModel model) { var dbModel = this.sitePageRepository.Get(model.SitePageId); if (string.IsNullOrWhiteSpace(dbModel.CreatedByUserId)) { dbModel.CreatedByUserId = this.userManager.GetUserId(this.User); } dbModel.UpdatedByUserId = this.userManager.GetUserId(this.User); dbModel.Key = model.Key.UrlKey(); dbModel.BreadcrumbName = model.BreadcrumbName.Trim(); dbModel.PublishDateTimeUtc = model.PublishDateTimeUtc; dbModel.Content = model.Content; dbModel.Title = model.Title.Trim(); dbModel.PageHeader = model.PageHeader; dbModel.IsLive = model.IsLive; dbModel.ExcludePageFromSiteMapXml = model.ExcludePageFromSiteMapXml; dbModel.MetaDescription = (model.MetaDescription != null) ? model.MetaDescription.Trim() : string.Empty; dbModel.PageType = model.PageType; dbModel.ReviewBestValue = model.ReviewBestValue; dbModel.ReviewItemName = model.ReviewItemName; dbModel.ReviewRatingValue = model.ReviewRatingValue; dbModel.ReviewWorstValue = model.ReviewWorstValue; dbModel.MetaKeywords = (model.MetaKeywords != null) ? model.MetaKeywords.Trim() : string.Empty; dbModel.AllowsComments = model.AllowsComments; dbModel.IsSectionHomePage = model.IsSectionHomePage; return(dbModel); }
public IActionResult EditSitePage(SitePageEditModel model) { if (!this.ModelState.IsValid) { return(this.View(model)); } var dbModel = this.ConvertToDbModel(model); if (this.sitePageRepository.Update(dbModel)) { var allPhotos = this.sitePagePhotoRepository.GetBlogPhotos(model.SitePageId); foreach (var photo in allPhotos) { photo.Title = this.Request.Form["PhotoTitle_" + photo.SitePageId]; photo.Description = this.Request.Form["PhotoDescription_" + photo.SitePageId]; this.sitePagePhotoRepository.Update(photo); } this.SetBlogTags(model, dbModel); this.ClearCache(model, dbModel); return(this.RedirectToAction(nameof(this.EditSitePage), new { SitePageId = dbModel.SitePageId })); } return(this.View(model)); }
private SitePageEditModel ToUiEditModel(SitePage dbModel, bool isHomePageSection) { var model = new SitePageEditModel() { Key = dbModel.Key, BreadcrumbName = dbModel.BreadcrumbName, Content = dbModel.Content, PageHeader = dbModel.PageHeader, Title = dbModel.Title, SitePageId = dbModel.SitePageId, PublishDateTimeUtc = dbModel.PublishDateTimeUtc, IsLive = dbModel.IsLive, ExcludePageFromSiteMapXml = dbModel.ExcludePageFromSiteMapXml, LiveUrlPath = UrlBuilder.BlogUrlPath(dbModel.SitePageSection.Key, dbModel.Key), PreviewUrlPath = UrlBuilder.BlogPreviewUrlPath(dbModel.SitePageId), MetaDescription = dbModel.MetaDescription, PageType = dbModel.PageType, ReviewBestValue = dbModel.ReviewBestValue, ReviewItemName = dbModel.ReviewItemName, ReviewRatingValue = dbModel.ReviewRatingValue, ReviewWorstValue = dbModel.ReviewWorstValue, MetaKeywords = dbModel.MetaKeywords, AllowsComments = dbModel.AllowsComments, IsSectionHomePage = dbModel.IsSectionHomePage, }; var mc = new ModelConverter(this.cacheService); foreach (var photo in dbModel.Photos.OrderBy(x => x.Rank)) { model.BlogPhotos.Add(new SitePagePhotoModel { SitePagePhotoId = photo.SitePagePhotoId, IsDefault = photo.IsDefault, PhotoUrl = photo.PhotoUrl, PhotoCdnUrl = mc.ConvertBlobToCdnUrl(photo.PhotoUrl), PhotoThumbCdnUrl = mc.ConvertBlobToCdnUrl(photo.PhotoThumbUrl), PhotoFullScreenCdnUrl = mc.ConvertBlobToCdnUrl(photo.PhotoFullScreenUrl), PhotoPreviewCdnUrl = mc.ConvertBlobToCdnUrl(photo.PhotoPreviewUrl), Title = photo.Title, Description = photo.Description }); } foreach (var tagItem in dbModel.SitePageTags.OrderBy(x => x.Tag.Name)) { model.BlogTags.Add(tagItem.Tag.Name); } model.BlogTags = model.BlogTags.OrderBy(x => x).ToList(); model.Tags = string.Join(", ", model.BlogTags); return(model); }
private void RemoveDeletedTags(SitePageEditModel model, IEnumerable <object> tagsToRemove) { foreach (var tag in tagsToRemove) { var tagKey = tag.ToString().UrlKey(); var tagDb = this.tagRepository.Get(tagKey); this.sitePageTagRepository.Delete(tagDb.TagId, model.SitePageId); } }
private void ClearCache(SitePageEditModel model, SitePage dbModel) { var cacheKey = CacheHelper.GetPageCacheKey(dbModel.SitePageSection.Key, model.Key); this.memoryCache.Remove(cacheKey); }