private List<IProjectPage> RebuildArea(PageSummary area)
{
var areaName = ResolveAreaName(area.Name);
var knownAreas = new HashSet<string>
{
"Archive",
"ContentCast",
"DataSource",
"GuidedSelling",
"Internal",
"PartnerAccess",
"Platform",
"Production",
"Sandbox",
"Vortex"
};
if (!knownAreas.Contains(areaName))
throw new InvalidOperationException($"Unknown area name '{area.Name}'.");
var result = new ConcurrentBag<IProjectPage>();
var projects = m_children[area.Id];
Parallel.ForEach(
projects,
new ParallelOptions { MaxDegreeOfParallelism = 5 },
project =>
{
var page = RebuildProject(areaName, project);
result.Add(page);
});
var updated = UpdateAreaPage(result, area);
if (updated)
{
Console.WriteLine("Rebuild [{0}] area summary ... UPDATED", areaName);
}
else
{
Console.WriteLine("Rebuild [{0}] area summary ... not changed", areaName);
}
return result.ToList();
}