Esempio n. 1
0
        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);
        }