public HttpResponseMessage GetView3dVisualization(SessionFilterModel filter) { try { VisualizationService visualizationService = new VisualizationService(); var view3dData = visualizationService.GetView3dData(filter); var data = new JavaScriptSerializer().Serialize(view3dData); var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(data, Encoding.UTF8, "application/json"); return(response); } catch (Exception ex) { throw InternalError.ThrowError(ex); } }
public View GetView3dData(SessionFilterModel filter) { View view = new View { sessions = new List <Session>(), groups = new List <Group>() }; if (filter == null) { return(view); } Guid[] idsList = filter.list.Select(x => Guid.Parse(x.id)).ToArray(); using (SwarmData context = new SwarmData()) { var sessions = context.Sessions .Where(s => idsList.Contains(s.Id)) .OrderBy(s => s.Started) .Select(s => s.Id) .ToList(); view.groups = context.CodeFiles .Where(c => sessions.Contains(c.Session.Id)) .OrderBy(c => c.Created) .AsEnumerable() .Select(c => new { pathOnly = System.IO.Path.GetDirectoryName(c.Path).ToLower() }) .Distinct() .Select((po, i) => new Group { groupId = i, maxIndexWidthQuantity = 0, path = po.pathOnly }) .ToList(); view.sessions = getSessions(context.Sessions .Include("CodeFiles") .Include("Breakpoints") .Include("Events") .Include("PathNodes") .Where(s => sessions.Contains(s.Id)) .OrderBy(s => s.Started).ToList(), view.groups); } return(view); }