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);
            }
        }
Пример #2
0
        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);
        }