Example #1
0
        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);
                }
            }
        }