public async Task <ClusterDetailsResponse> GetClusterAsync(string id) { var cluster = await clusterRepository.ReadAsync(c => c.Id == id && c.DeleteAt == null); if (cluster != null) { var clusterMetrics = await metricRepository.ReadsAsync(m => m.EntityId == id); var response = mapper.Map <ClusterDetailsResponse>(cluster); response.MasterMetrics = clusterMetrics.Select(cm => mapper.Map <SimpleMetricItemResponse>(cm)) .OrderByDescending(o => o.DateValue) .Take(10).ToList(); response.Nodes = new List <ClusterNodeDetailsResponse>(); foreach (var node in cluster.Nodes) { var nodeMetrics = await metricRepository.ReadsAsync(m => m.EntityId == node.Id); var nodeMapped = mapper.Map <ClusterNodeDetailsResponse>(node); nodeMapped.NodeMetrics = nodeMetrics.Select(cm => mapper.Map <SimpleMetricItemResponse>(cm)) .OrderByDescending(o => o.DateValue) .Take(10).ToList(); response.Nodes.Add(nodeMapped); } return(response); } return(null); }