using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
using Umbraco.New.Cms.Core.Models;
namespace Umbraco.Cms.Core.Services;
public class TrackedReferencesService : ITrackedReferencesService
{
private readonly ICoreScopeProvider _scopeProvider;
private readonly ITrackedReferencesRepository _trackedReferencesRepository;
[Obsolete("Please use ctor that does not take an IEntityService, scheduled for removal in V12")]
public TrackedReferencesService(
ITrackedReferencesRepository trackedReferencesRepository,
ICoreScopeProvider scopeProvider,
IEntityService entityService) : this(trackedReferencesRepository, scopeProvider)
{
}
public TrackedReferencesService(
ITrackedReferencesRepository trackedReferencesRepository,
ICoreScopeProvider scopeProvider)
{
_trackedReferencesRepository = trackedReferencesRepository;
_scopeProvider = scopeProvider;
}
///
/// Gets a paged result of items which are in relation with the current item.
/// Basically, shows the items which depend on the current item.
///
public PagedResult GetPagedRelationsForItem(int id, long pageIndex, int pageSize, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedRelationsForItem(id, pageIndex, pageSize, filterMustBeIsDependency, out var totalItems);
return new PagedResult(totalItems, pageIndex + 1, pageSize) { Items = items };
}
///
/// Gets a paged result of items used in any kind of relation from selected integer ids.
///
public PagedResult GetPagedItemsWithRelations(int[] ids, long pageIndex, int pageSize, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedItemsWithRelations(ids, pageIndex, pageSize, filterMustBeIsDependency, out var totalItems);
return new PagedResult(totalItems, pageIndex + 1, pageSize) { Items = items };
}
///
/// Gets a paged result of the descending items that have any references, given a parent id.
///
public PagedResult GetPagedDescendantsInReferences(int parentId, long pageIndex, int pageSize, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedDescendantsInReferences(
parentId,
pageIndex,
pageSize,
filterMustBeIsDependency,
out var totalItems);
return new PagedResult(totalItems, pageIndex + 1, pageSize) { Items = items };
}
public PagedModel GetPagedRelationsForItem(int id, long skip, long take, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedRelationsForItem(id, skip, take, filterMustBeIsDependency, out var totalItems);
var pagedModel = new PagedModel(totalItems, items);
return pagedModel;
}
public PagedModel GetPagedDescendantsInReferences(int parentId, long skip, long take, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedDescendantsInReferences(
parentId,
skip,
take,
filterMustBeIsDependency,
out var totalItems);
var pagedModel = new PagedModel(totalItems, items);
return pagedModel;
}
public PagedModel GetPagedItemsWithRelations(int[] ids, long skip, long take, bool filterMustBeIsDependency)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
IEnumerable items = _trackedReferencesRepository.GetPagedItemsWithRelations(ids, skip, take, filterMustBeIsDependency, out var totalItems);
var pagedModel = new PagedModel(totalItems, items);
return pagedModel;
}
}