#IPublishedContent.ChildrenForAllCultures - Only returns child of one culture (not all...)

1 messages · Page 1 of 1 (latest)

tame turret
#

Hi, i could really use a hand on this.

With such code:

var culture = HttpContext.Features.Get<IRequestCultureFeature>()!.RequestCulture.Culture;
using var umbracoContext = _umbracoContextFactory.EnsureUmbracoContext().UmbracoContext;

var blog = (Blog)umbracoContext.Content!.GetByRoute("/blog", culture: culture.Name)!;

var response = MapBlogToResponse(blog, culture.Name);
return Ok(response);

When looking into the debugger, i only get one child one, but that child node has a list of cultures, which has two elements?

#

This then breaks the rest of the query, because the cultures are not loaded for the the mapping.

#

Full context:

using System.Diagnostics.CodeAnalysis;

using Asp.Versioning;

using MaGyRakovina.Api.Controllers.Common;
using MaGyRakovina.Contracts.Blog;

using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;

using Umbraco.Cms.Core.Web;
using Umbraco.Cms.Web.Common.PublishedModels;

namespace MaGyRakovina.Api.Controllers;

[VersionedRoute("blog")]
public class BlogController : ApiController
{
    private readonly IUmbracoContextFactory _umbracoContextFactory;
    
    public BlogController(IUmbracoContextFactory umbracoContextFactory)
    {
        _umbracoContextFactory = umbracoContextFactory;
    }

    [MapToApiVersion(1)]
    [HttpGet("categories")]
    public IActionResult GetBlogCategories()
    {
        var culture = HttpContext.Features.Get<IRequestCultureFeature>()!.RequestCulture.Culture;
        using var umbracoContext = _umbracoContextFactory.EnsureUmbracoContext().UmbracoContext;

        var blog = (Blog)umbracoContext.Content!.GetByRoute("/blog", culture: culture.Name)!;

        var response = MapBlogToResponse(blog, culture.Name);
        return Ok(response);
    }

    [SuppressMessage("ReSharper", "ConvertToLambdaExpression")]
    private BlogCategoriesResponse MapBlogToResponse(Blog blog, string culture)
    {
        return new BlogCategoriesResponse(blog.Children(culture)
            .Cast<BlogCategory>()
            .Select(category =>
            {
                return new BlogCategoryResponse(
                    category.Title,
                    category.Children(culture)
                        .Cast<BlogArticle>()
                        .Select(article =>
                        {
                            return new BlogArticleThumbnailResponse(
                                article.Title,
                                article.Key);
                        })
                        .ToArray()
                );
            })
            .ToArray());
    }
}
tardy zodiac
#

I'm facing a similar problem, did you get anywhere with this?