public SectorialPortfolioModel GenerateSectorialModel(List<AssetBase> assets) { var allSectors = edisRepo.GetAllSectorsSync(); List<SectorItem> sectorItems = new List<SectorItem>(); allSectors.ForEach(s => sectorItems.Add(new SectorItem { sector = s })); double totalValue = 0; foreach (var item in assets.GetAssetSectorialDiversificationSync<InternationalEquity>(edisRepo)) { totalValue += item.Value; sectorItems.FirstOrDefault(s => s.sector == item.Key).value += item.Value; } sectorItems.ForEach(s => s.percentage = s.value / totalValue); SectorialPortfolioModel model = new SectorialPortfolioModel { data = sectorItems, total = totalValue, percentage = 1 }; return model; }
public SectorialPortfolioModel GetSectorialExposureSummary_Client() { Client client = edisRepo.GetClientSync(User.Identity.GetUserId(), DateTime.Now); ClientGroup clientGroup = edisRepo.GetClientGroupSync(client.ClientGroupId, DateTime.Now); if (clientGroup.MainClientId == client.Id) { List<GroupAccount> groupAccounts = edisRepo.GetAccountsForClientGroupSync(clientGroup.ClientGroupNumber, DateTime.Now); List<ClientAccount> clientAccounts = edisRepo.GetAccountsForClientSync(client.ClientNumber, DateTime.Now); var allAectors = edisRepo.GetAllSectorsSync(); List<SectorItem> sectorItems = new List<SectorItem>(); foreach (var sector in allAectors) { sectorItems.Add(new SectorItem { sector = sector }); } double totalValue = 0; foreach (var account in groupAccounts) { var assets = account.GetAssetsSync(); var dictionary = AssetsExtensions.GetAssetSectorialDiversificationSync<AustralianEquity>(assets, edisRepo); foreach (var item in dictionary) { totalValue += item.Value; sectorItems.FirstOrDefault(s => s.sector == item.Key).value += item.Value; } } foreach (var account in clientAccounts) { var assets = account.GetAssetsSync(); var dictionary = AssetsExtensions.GetAssetSectorialDiversificationSync<AustralianEquity>(assets, edisRepo); foreach (var item in dictionary) { totalValue += item.Value; sectorItems.FirstOrDefault(s => s.sector == item.Key).value += item.Value; } } foreach (var sectorItem in sectorItems) { sectorItem.percentage = sectorItem.value / totalValue; } SectorialPortfolioModel model = new SectorialPortfolioModel { data = sectorItems, total = totalValue, percentage = 1 }; return model; } else { List<ClientAccount> accounts = edisRepo.GetAccountsForClientSync(client.ClientNumber, DateTime.Now); var allAectors = edisRepo.GetAllSectorsSync(); List<SectorItem> sectorItems = new List<SectorItem>(); foreach (var sector in allAectors) { sectorItems.Add(new SectorItem { sector = sector }); } double totalValue = 0; foreach (var account in accounts) { var assets = account.GetAssetsSync(); var dictionary = AssetsExtensions.GetAssetSectorialDiversificationSync<AustralianEquity>(assets, edisRepo); foreach (var item in dictionary) { totalValue += item.Value; sectorItems.FirstOrDefault(s => s.sector == item.Key).value += item.Value; } } foreach (var sectorItem in sectorItems) { sectorItem.percentage = sectorItem.value / totalValue; } SectorialPortfolioModel model = new SectorialPortfolioModel { data = sectorItems, total = totalValue, percentage = 1 }; return model; } }