protected ComponentsTreeItemDetailsModel GetTreeItemDetailsModel(SimplifiedComponent component, DateTime now, string[] expandedItems) { var result = new ComponentsTreeItemDetailsModel() { Id = component.Id, Events = new ComponentsTreeItemEventsDetailsModel() { HasEvents = component.EventsStatus.FirstEventId.HasValue, Status = component.EventsStatus.Status, FromDate = component.EventsStatus.StartDate, StatusDuration = component.EventsStatus.GetDuration(now) }, Unittests = new ComponentsTreeItemUnittestsDetailsModel() { Id = component.Id, Status = component.UnitTestsStatus.Status, Items = component.Unittests .OrderByDescending(t => t.StatusData.Status) .ThenBy(t => t.DisplayName) .Select(t => new ComponentsTreeItemUnittestsDetailsItemModel() { Id = t.Id, DisplayName = t.DisplayName, Status = t.StatusData.Status, StatusDuration = t.StatusData.GetDuration(now), Message = t.StatusData.Message }) .ToArray(), StatusDuration = component.UnitTestsStatus.GetDuration(now) }, Metrics = new ComponentsTreeItemMetricsDetailsModel() { Id = component.Id, Status = component.MetricsStatus.Status, Items = component.Metrics .OrderByDescending(t => t.StatusData.Status) .ThenBy(t => t.DisplayName) .Select(t => new ComponentsTreeItemMetricsDetailsItemModel() { Id = t.Id, DisplayName = t.DisplayName, Status = t.StatusData.Status, StatusDuration = t.StatusData.GetDuration(now), Value = t.Value }) .ToArray(), StatusDuration = component.MetricsStatus.GetDuration(now) } }; result.Unittests.Expanded = expandedItems.Contains(result.Unittests.HtmlId); result.Metrics.Expanded = expandedItems.Contains(result.Metrics.HtmlId); return(result); }
protected ComponentsTreeItemDetailsModel GetTreeItemDetailsModel( SimplifiedComponent component, string[] expandedItems, DateTime from, DateTime to) { var eventRepository = CurrentAccountDbContext.GetEventRepository(); var eventsStates = eventRepository.GetTimelineStates(component.Id, EventCategory.ComponentEventsStatus, from, to); var eventsOkTime = eventRepository.GetTimelineOkTime(eventsStates, from, to); var eventsItems = this.GetTimelineItemsByStates(eventsStates, from, to); var unittestsStates = eventRepository.GetTimelineStates(component.Id, EventCategory.ComponentUnitTestsStatus, from, to); var unittestsOkTime = eventRepository.GetTimelineOkTime(unittestsStates, from, to); var unittestsItems = this.GetTimelineItemsByStates(unittestsStates, from, to); var metricsStates = eventRepository.GetTimelineStates(component.Id, EventCategory.ComponentMetricsStatus, from, to); var metricsOkTime = eventRepository.GetTimelineOkTime(metricsStates, from, to); var metricsItems = this.GetTimelineItemsByStates(metricsStates, from, to); var result = new ComponentsTreeItemDetailsModel() { Id = component.Id, HasEvents = component.HasEvents, EventsOkTime = eventsOkTime, EventsTimeline = new TimelineModel() { Category = EventCategory.ComponentEventsStatus, OwnerId = component.Id, DateFrom = from, DateTo = to, Items = eventsItems, OkTime = eventsOkTime }, From = from, To = to, Path = component.Path, Unittests = new ComponentsTreeItemUnittestsDetailsModel() { Id = component.Id, Items = component.Unittests .Select(t => new ComponentsTreeItemUnittestsDetailsItemModel() { Id = t.Id, DisplayName = t.DisplayName }) .ToArray() }, UnittestsOkTime = unittestsOkTime, UnittestsTimeline = new TimelineModel() { Category = EventCategory.ComponentUnitTestsStatus, OwnerId = component.Id, DateFrom = from, DateTo = to, Items = unittestsItems, OkTime = unittestsOkTime }, Metrics = new ComponentsTreeItemMetricsDetailsModel() { Id = component.Id, Items = component.Metrics .Select(t => new ComponentsTreeItemMetricsDetailsItemModel() { Id = t.Id, DisplayName = t.DisplayName }) .ToArray() }, MetricsOkTime = metricsOkTime, MetricsTimeline = new TimelineModel() { Category = EventCategory.ComponentMetricsStatus, OwnerId = component.Id, DateFrom = from, DateTo = to, Items = metricsItems, OkTime = metricsOkTime } }; foreach (var unittest in result.Unittests.Items) { var unittestStates = eventRepository.GetTimelineStates(unittest.Id, EventCategory.UnitTestStatus, from, to); unittest.OkTime = eventRepository.GetTimelineOkTime(unittestStates, from, to); var unittestItems = this.GetTimelineItemsByStates(unittestStates, from, to); unittest.Timeline = new TimelineModel() { Category = EventCategory.UnitTestStatus, OwnerId = unittest.Id, DateFrom = from, DateTo = to, Items = unittestItems, OkTime = unittest.OkTime }; } result.Unittests.Items = result.Unittests.Items.OrderBy(t => t.OkTime).ToArray(); foreach (var metric in result.Metrics.Items) { var metricStates = eventRepository.GetTimelineStates(metric.Id, EventCategory.MetricStatus, from, to); metric.OkTime = eventRepository.GetTimelineOkTime(metricStates, from, to); var metricItems = this.GetTimelineItemsByStates(metricStates, from, to); metric.Timeline = new TimelineModel() { Category = EventCategory.MetricStatus, OwnerId = metric.Id, DateFrom = from, DateTo = to, Items = metricItems, OkTime = metric.OkTime }; } result.Metrics.Items = result.Metrics.Items.OrderBy(t => t.OkTime).ToArray(); result.Unittests.Expanded = expandedItems.Contains(result.Unittests.HtmlId); result.Metrics.Expanded = expandedItems.Contains(result.Metrics.HtmlId); return(result); }