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; } }