public DayPointValue(DateTime date, IEnumerable <DayPointValue> points) : this(date) { if (points.Count() > 0) { var minimun = points.Min(c => c.Minimun); var maximun = points.Max(c => c.Maximun); var average = QualityUtils.CalculateAverage(points.Select(c => c.Average)); } }
public async Task <JourneyGroupListRp> GetJourneyGroupReport(int productId, DatePeriodValue period) { var entity = await this._dbContext.FullLoadProductWithSourceItems(productId, period.Start, period.End); var result = new JourneyGroupListRp(); var days = period.ToDaysPeriods(); foreach (var group in entity.Journeys.GroupBy(c => c.Group)) { var serie = new MultiSerieItemGetRp() { Name = group.Key }; foreach (var day in days) { serie.Items.Add(new SeriesItemGetRp(day.Start, group.Select(c => c.Measure(day).AvailabilityDebt).Sum())); } var measures = group.Select(c => new { measure = c.Measure(period) }).ToList(); var temp = new JourneyGroupListRp.JourneyGrouptem { Name = group.Key, AvailabilitySloAvg = QualityUtils.CalculateAverage(group.Select(c => c.AvailabilitySlo)), AvailabilitySloMin = QualityUtils.CalculateMinimum(group.Select(c => c.AvailabilitySlo)), LatencySloAvg = QualityUtils.CalculateAverage(group.Select(c => c.LatencySlo)), LatencySloMin = QualityUtils.CalculateMinimum(group.Select(c => c.LatencySlo)), ExperienceSloAvg = QualityUtils.CalculateAverage(group.Select(c => c.ExperienceSlo)), ExperienceSloMin = QualityUtils.CalculateMinimum(group.Select(c => c.ExperienceSlo)) }; temp.AvailabilityAvg = QualityUtils.CalculateAverage(measures.Select(c => c.measure.Availability)); temp.AvailabilityMin = QualityUtils.CalculateMinimum(measures.Select(c => c.measure.Availability)); temp.LatencyAvg = QualityUtils.CalculateAverage(measures.Select(c => c.measure.Latency)); temp.LatencyMin = QualityUtils.CalculateMinimum(measures.Select(c => c.measure.Latency)); temp.ExperienceAvg = QualityUtils.CalculateAverage(measures.Select(c => c.measure.Experience)); temp.ExperienceMin = QualityUtils.CalculateMinimum(measures.Select(c => c.measure.Experience)); temp.Count = group.Count(); temp.AvailabilityDebt = measures.Sum(c => c.measure.AvailabilityDebt); temp.ExperienceDebt = measures.Sum(c => c.measure.ExperienceDebt); temp.LatencyDebt = measures.Sum(c => c.measure.LatencyDebt); result.Series.Add(serie); result.Items.Add(temp); } return(result); }
public static QualityMeasureValue Merge(IEnumerable <QualityMeasureValue> measures) { var availability = QualityUtils.CalculateAverage(measures.Select(c => c.Availability)); var latency = QualityUtils.CalculateAverage(measures.Select(c => c.Latency)); var experience = QualityUtils.CalculateAverage(measures.Select(c => c.Experience)); var total = measures.Sum(c => c.Total); var good = measures.Sum(c => c.Good); return(new QualityMeasureValue(availability, latency, experience) { Total = total, Good = good }); }
private MeasureValue MeasureLatency(DatePeriodValue period = null) { IEnumerable <SourceItemEntity> data; if (period != null) { data = this.SourceItems.Where(c => c.Group == SourceGroupEnum.Latency && c.Target >= period.Start && c.Target <= period.End); } else { data = this.SourceItems.Where(c => c.Group == SourceGroupEnum.Latency); } if (data.Count() == 0) { return(new MeasureValue(101, false)); } var proportion = QualityUtils.CalculateAverage(data.Select(c => c.Measure)); return(new MeasureValue(proportion)); }
private MeasureValue MeasureExperience(DatePeriodValue period = null) { IEnumerable <SourceItemEntity> data; if (period != null) { data = this.SourceItems.Where(c => c.Group == SourceGroupEnum.Experience && c.Target >= period.Start && c.Target <= period.End); } else { data = this.SourceItems.Where(c => c.Group == SourceGroupEnum.Experience); } if (data.Count() == 0) { return(new InteractionMeasureValue(1, 0, 0, false)); } var good = data.Select(c => c.Good.GetValueOrDefault()).Sum(); var total = data.Select(c => c.Total.GetValueOrDefault()).Sum(); var measure = QualityUtils.CalculateAverage(data.Select(c => c.Measure)); return(new InteractionMeasureValue(measure, total, good)); }