46 lines
2.1 KiB
C#
46 lines
2.1 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Umbraco.Cms.Core.Mapping;
|
|
using Umbraco.Cms.Core.Models;
|
|
using Umbraco.Cms.Core.Services;
|
|
using Umbraco.Cms.Api.Management.ViewModels.Pagination;
|
|
using Umbraco.Cms.Api.Management.ViewModels.TrackedReferences;
|
|
using Umbraco.New.Cms.Core.Models;
|
|
|
|
namespace Umbraco.Cms.Api.Management.Controllers.TrackedReference;
|
|
|
|
public class DescendantsTrackedReferenceController : TrackedReferenceControllerBase
|
|
{
|
|
private readonly ITrackedReferencesService _trackedReferencesSkipTakeService;
|
|
private readonly IUmbracoMapper _umbracoMapper;
|
|
|
|
public DescendantsTrackedReferenceController(ITrackedReferencesService trackedReferencesSkipTakeService, IUmbracoMapper umbracoMapper)
|
|
{
|
|
_trackedReferencesSkipTakeService = trackedReferencesSkipTakeService;
|
|
_umbracoMapper = umbracoMapper;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a page list of the child nodes of the current item used in any kind of relation.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Used when deleting and unpublishing a single item to check if this item has any descending items that are in any
|
|
/// kind of relation.
|
|
/// This is basically finding the descending items which are children in relations.
|
|
/// </remarks>
|
|
[HttpGet("descendants/{parentId:int}")]
|
|
[MapToApiVersion("1.0")]
|
|
[ProducesResponseType(typeof(PagedViewModel<RelationItemViewModel>), StatusCodes.Status200OK)]
|
|
public async Task<ActionResult<PagedViewModel<RelationItemViewModel>>> Descendants(int parentId, long skip, long take, bool? filterMustBeIsDependency)
|
|
{
|
|
PagedModel<RelationItemModel> relationItems = _trackedReferencesSkipTakeService.GetPagedDescendantsInReferences(parentId, skip, take, filterMustBeIsDependency ?? true);
|
|
var pagedViewModel = new PagedViewModel<RelationItemViewModel>
|
|
{
|
|
Total = relationItems.Total,
|
|
Items = _umbracoMapper.MapEnumerable<RelationItemModel, RelationItemViewModel>(relationItems.Items),
|
|
};
|
|
|
|
return await Task.FromResult(pagedViewModel);
|
|
}
|
|
}
|