private string GetPostAbsoluteUrl(Blog.Models.Page page) { var relativeUrl = page.IsParent ? BlogRoutes.GetPageRelativeLink(page.Slug) : BlogRoutes.GetPageRelativeLink(page.Parent.Slug, page.Slug); return($"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{relativeUrl}"); }
/// <summary> /// Returns a list of <see cref="PageAdminVM"/>, when <paramref name="parentId"/> is present /// the returned list contains the parent and its children, otherwise a list of parents are /// returned. /// </summary> /// <param name="parentId"></param> /// <remarks> /// When a page or its parent is draft, its PageLink is null. /// </remarks> private async Task <List <PageAdminVM> > GetPageVMsAsync(int parentId) { var pageVMs = new List <PageAdminVM>(); IList <Blog.Models.Page> pages; bool isChild = false; Fan.Blog.Models.Page parent = null; var coreSettings = await settingService.GetSettingsAsync <CoreSettings>(); if (parentId <= 0) { pages = await pageService.GetParentsAsync(withChildren : true); } else { parent = await pageService.GetAsync(parentId); pages = parent.Children; isChild = true; pageVMs.Add(new PageAdminVM { Id = parent.Id, Title = parent.Title, Date = parent.CreatedOn.ToLocalTime(coreSettings.TimeZoneId).ToString(POST_DATE_STRING_FORMAT), Author = parent.User.DisplayName, EditLink = BlogRoutes.GetPageEditLink(parent.Id), IsDraft = parent.Status == EPostStatus.Draft, PageLink = parent.Status == EPostStatus.Draft ? null : $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(parent.Slug), ChildCount = parent.Children.Count, ViewCount = parent.ViewCount, }); } foreach (var page in pages) { var pageLink = parent != null && parent.Status == EPostStatus.Published? $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(parent.Slug, page.Slug) : $"{Request.Scheme}://{Request.Host}" + BlogRoutes.GetPageRelativeLink(page.Slug); pageLink = page.Status == EPostStatus.Draft || (parent != null && parent.Status == EPostStatus.Draft) ? null : pageLink; pageVMs.Add(new PageAdminVM { Id = page.Id, Title = page.Title, Date = page.CreatedOn.ToLocalTime(coreSettings.TimeZoneId).ToString(POST_DATE_STRING_FORMAT), Author = page.User.DisplayName, ChildrenLink = !isChild && page.Children.Count > 0 ? $"{Request.Path}/{page.Id}" : "", EditLink = BlogRoutes.GetPageEditLink(page.Id), PageLink = pageLink, IsChild = isChild, IsDraft = page.Status == EPostStatus.Draft, ChildCount = isChild ? 0 : page.Children.Count, ViewCount = page.ViewCount, }); } return(pageVMs); }