private static AggregatedCrumData AggregateCrumbData(string sensorName, Tracker1 tracker) { if (tracker.Sensors == null || tracker.Sensors.Count == 0) { return(new AggregatedCrumData()); } var sensor = tracker.Sensors.Where(s => s.Name == sensorName).FirstOrDefault(); if (sensor != null && sensor.Crumbs != null && sensor.Crumbs.Count > 0) { return(sensor.Crumbs .GroupBy(item => 1) .Select(crumbs => new AggregatedCrumData { FirstCrumbDtm = crumbs.Min(a => a.CreatedDtm), LastCrumbDtm = crumbs.Max(a => a.CreatedDtm), CrumbCount = crumbs.Count(), AvgValue = Math.Round(crumbs.Average(a => a.Value), 2) }) .First()); } return(new AggregatedCrumData()); }
private static Contracts.Models.TrackerData CreateTrakerData(Company company, Tracker1 tracker) { var aggregatedTemperature = AggregateCrumbData("Temperature", tracker); var aggregatedHumidty = AggregateCrumbData("Humidty", tracker); var normalizedTracker = new NormilizedTracker { TrackerId = tracker.Id, TrackerName = tracker.Model }; return(TrackerDataNormalizer.CreateTrakerData(company, normalizedTracker, aggregatedTemperature, aggregatedHumidty)); }