private async Task UpdateParentAsync(List <ChannelSummary> summaries, int sourceId, IChannelSummary parent) { var source = await GetAsync(sourceId); source.ParentId = parent.Id; source.ParentsPath = ListUtils.AddIfNotExists(parent.ParentsPath, parent.Id); if (!source.ParentsPath.Contains(source.SiteId)) { source.ParentsPath.Insert(0, source.SiteId); } source.ParentsCount = source.ParentsPath.Count; await UpdateAsync(source); var childIds = summaries .Where(x => x.ParentId == source.Id) .Select(x => x.Id) .ToList(); if (childIds.Count > 0) { foreach (var childId in childIds) { await UpdateParentAsync(summaries, childId, source); } } }