private MultiSeriesGetRp InternalGetDailyJourneySeries(ProductEntity product, DateTime start, DateTime end) { var result = new MultiSeriesGetRp { Start = start, End = end, Name = product.Name, Avatar = product.Avatar }; var period = new DatePeriodValue(start, end); var agg = new ProductDailyAggregate(product, period); var response = agg.MeasureQuality(); var debtSerie = new MultiSerieItemGetRp() { Name = "Debt", Avatar = product.Avatar }; foreach (var item in response.OrderBy(c => c.Date)) { debtSerie.Items.Add(new SeriesItemGetRp(item.Date, item.Measure.AvailabilityDebt)); } result.Series.Add(debtSerie); return(result); }
public async Task <MultiSeriesGetRp> GetDailyAvailabilitySeriesById(int featureId, DateTime start, DateTime end) { var entity = await this._dbContext.Features.Include(c => c.Indicators) .ThenInclude(c => c.Source) .SingleAsync(c => c.Id == featureId); foreach (var indicator in entity.Indicators) { var sourceItems = await this._dbContext.GetSourceItems(indicator.SourceId, start, end); indicator.Source.SourceItems = sourceItems; } var result = new MultiSeriesGetRp { Start = start, End = end, Name = entity.Name, Avatar = entity.Avatar }; var aggregator = new FeatureDailyAvailabilityAggregate(entity, new DatePeriodValue(start, end)); var(availability, indicators) = aggregator.MeasureAvailability(); result.Series.Add(new MultiSerieItemGetRp() { Name = "Availability", Avatar = entity.Avatar, Items = availability.Select(c => new SeriesItemGetRp(c.Date, c.Measure.Availability)).ToList() }); foreach (var indicator in indicators) { result.Series.Add(new MultiSerieItemGetRp() { Name = string.Format("SLI:{0}", indicator.Item1.Id), Avatar = indicator.Item1.Avatar, Items = indicator.Item2.Select(c => new SeriesItemGetRp(c.Date, c.Measure.Availability)).ToList() }); } return(result); }