/// <summary> /// Gets the ancestors. /// </summary> /// <param name="request">The request.</param> /// <returns>Task{BaseItemDto[]}.</returns> public List <BaseItemDto> GetAncestors(GetAncestors request) { var item = _dtoService.GetItemByDtoId(request.Id); var baseItemDtos = new List <BaseItemDto>(); var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; // Get everything var fields = Enum.GetNames(typeof(ItemFields)) .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); BaseItem parent = item.Parent; while (parent != null) { if (user != null) { parent = TranslateParentItem(parent, user); } baseItemDtos.Add(_dtoService.GetBaseItemDto(parent, fields, user)); if (parent is UserRootFolder) { break; } parent = parent.Parent; } return(baseItemDtos.ToList()); }
/// <summary> /// Gets the ancestors. /// </summary> /// <param name="request">The request.</param> /// <returns>Task{BaseItemDto[]}.</returns> public async Task <BaseItemDto[]> GetAncestors(GetAncestors request) { var item = _dtoService.GetItemByDtoId(request.Id); var tasks = new List <Task <BaseItemDto> >(); var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null; // Get everything var fields = Enum.GetNames(typeof(ItemFields)) .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); BaseItem parent = item.Parent; while (parent != null) { if (user != null) { parent = TranslateParentItem(parent, user); } tasks.Add(_dtoService.GetBaseItemDto(parent, fields, user)); if (parent is UserRootFolder) { break; } parent = parent.Parent; } return(await Task.WhenAll(tasks).ConfigureAwait(false)); }
/// <summary> /// Gets the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>System.Object.</returns> public object Get(GetAncestors request) { var result = GetAncestors(request).Result; return(ToOptimizedResult(result)); }