Beispiel #1
0
        public List <MeasurementResponse> GetMeasurement(string module)
        {
            var measurementGroups = _context.Measurements
                                    .Include(m => m.Module)
                                    .Where(m => m.Module.Name == module)
                                    .Include(m => m.SensorSpec).ThenInclude(ss => ss.Sensor)
                                    .GroupBy(m => m.TimeReceived);

            List <MeasurementResponse> measurements = new List <MeasurementResponse>();

            // iterate over each group (measurementGroups is an array of arrays, grouped by TimeReceived)
            foreach (var measurementGroup in measurementGroups)
            {
                // create singe object, which will contain all sensor data
                MeasurementResponse measurementResponse = new MeasurementResponse
                {
                    Module         = measurementGroup.ElementAt(0).Module,
                    TimeReceived   = measurementGroup.ElementAt(0).TimeReceived,
                    TimeRegistered = measurementGroup.ElementAt(0).TimeRegistered,
                    Sensors        = measurementGroup.Select(m =>
                    {
                        SensorResponse s = new SensorResponse(m.SensorSpec.Sensor)
                        {
                            Value = m.Value
                        };
                        return(s);
                    }).ToList()
                };

                measurements.Add(measurementResponse);
            }

            return(measurements);
        }
Beispiel #2
0
        public async Task <IActionResult> GetLastMeasuremetByFlowerId([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var flower = await _dataContext.Flowers
                         .Include(f => f.Measurements)
                         .FirstOrDefaultAsync(f => f.Id == id);

            if (flower == null)
            {
                return(NotFound());
            }

            var measurement = flower.Measurements.LastOrDefault();
            var response    = new MeasurementResponse
            {
                Measure     = measurement.Measure,
                MeasureDate = measurement.MeasureDate,
                Id          = measurement.Id
            };

            return(Ok(response));
        }