public ActionResult FindBrokerage(GraphViewModel graphViewModel) { try { if (graphViewModel.Graph.Edges.Count != 0 && graphViewModel.Graph.GraphSet.Count == 0) { foreach (Edge <UserDto> edge in graphViewModel.Graph.Edges) { graphViewModel.Graph.CreateGraphSet(edge); } } FetchItemServiceResponse <Graph <UserDto> > response = _graphService.DetectBrokerageInGraph(graphViewModel.Graph); if (response.Succeeded) { graphViewModel.Graph = response.Item; FetchListServiceResponse <BrokerageDto> topTenBrokersResponse = _graphService.FetchTopTenBrokers(graphViewModel.Graph, GetConnectionStringBasedOnSelectedMember(graphViewModel.SelectedTeamMemberId.ToString())); if (topTenBrokersResponse.Succeeded) { graphViewModel.BrokerageDto = topTenBrokersResponse.Items; graphViewModel.BrokerageDetected = true; } List <NodeDto> nodes = graphViewModel.Graph.Nodes.Select(x => new NodeDto() { id = x.Id, label = x.NodeElement.Name, title = $"Node degree: {x.Degree}", size = 20, group = (graphViewModel.GraphDto.nodes.First(y => y.id == x.Id).group) }).ToList(); List <EdgeDto> edges = graphViewModel.Graph.Edges.Select(x => new EdgeDto() { from = x.Node1.Id, to = x.Node2.Id }).ToList(); HashSet <BrokerageDto> topTenBrokers = topTenBrokersResponse.Items; foreach (NodeDto node in (nodes.Where(x => topTenBrokers.Select(y => y.UserId).Contains(x.id)))) { node.shape = "diamond"; } GraphDto graphDto = new GraphDto { nodes = nodes, edges = edges }; graphViewModel.Graph.SetCommunityNodes(); graphViewModel.RolesDetected = false; graphViewModel.GraphDto = graphDto; } } catch (Exception e) { return(new HttpStatusCodeResult(500, e.Message)); } return(View("GraphView_partial", graphViewModel)); }