public static double RecurseHoldings(ShareHolder s, Holding parent) { reentry++; List<Holding> shareHoldings = Holdings.FindAll(h => h.ShareHolder == s); double shareHoldingsAggregated = 0; foreach (Holding item in shareHoldings) { item.Parent = parent; shareHoldingsAggregated += item.ShareHolderCapital; String parentPathCode = item.Parent == null? s.Code: item.Parent.PathCode; sb.Append("[{v:'" + item.PathCode + "', f:'<div class=\"greenbg shareholdername\">" + item.Comp.Name + "</div><div class=\"greenbg companycapital\">" + (item.Comp.TotalCompanyCapital / HoldingChartConfiguration.ScaleDownFactor).ToString("#,#", CultureInfo.InvariantCulture) + "</div><div class=\"greenbg shareholdercapital\">" + (item.ShareHolderCapital / HoldingChartConfiguration.ScaleDownFactor).ToString("#,#", CultureInfo.InvariantCulture) + "</div><div class=\"greenbg shareholderpercent\">" + item.EffectiveShareHoldingPercentage.ToString("0.##") + "%</div>'}, '" + parentPathCode + "', '' ],"); double childAggregated = 0; if (item.Comp != null) { if (!HoldingChartConfiguration.ConsiderRecurseFlag || (HoldingChartConfiguration.ConsiderRecurseFlag && item.Comp.Recurse)) { childAggregated = RecurseHoldings(item.Comp, item); } } shareHoldingsAggregated += childAggregated; } reentry--; return shareHoldingsAggregated; }
public static string ProcessHoldings(ShareHolder s, Holding parent) { sb.Clear(); sb.Append("["); double totalHoldings = RecurseHoldings(s, parent); if (s is FamilyMember) { sb.Append("[{v:'" + s.Code + "', f:'<div class=\"bluebg shareholdername\">" + s.Name + "</div><div class=\"bluebg shareholdercapital\">" + (totalHoldings / HoldingChartConfiguration.ScaleDownFactor).ToString("#,#", CultureInfo.InvariantCulture)+ "</div>'}, '', '' ],"); } else { sb.Append("[{v:'" + s.Code + "', f:'<div class=\"greenbg shareholdername\">" + s.Name + "</div><div class=\"greenbg shareholdercapital\">" + (totalHoldings / HoldingChartConfiguration.ScaleDownFactor).ToString("#,#", CultureInfo.InvariantCulture) + "</div>'}, '', '' ],"); } sb.Remove(sb.Length - 1, 1); sb.Append("]"); return sb.ToString(); }