public PlotModel(string deviceName, Enums.SensorTypes sensorType) { if (deviceName == null) { throw new ArgumentNullException(nameof(deviceName)); } DeviceName = deviceName; SensorType = sensorType; }
public Value(DateTime timestamp, Device device, float data, Enums.SensorTypes sensorType) { Guid = new Guid(); Timestamp = timestamp; Device = device; Data = data; SensorType = sensorType; switch (SensorType) { case Enums.SensorTypes.Dissolved_Oxygen: DataUnit = "mg/L"; break; case Enums.SensorTypes.Temperature: DataUnit = "°C"; break; } }
public async Task SaveValuesToDbAsync(ValueModel model) { Enums.SensorTypes sensorType = model.SensorType; List <ValueItemModel> valueItemsToSave = model.Items; IEnumerable <Value> values = await _dbContext.QueryValuesAsync(p => p, sensorType); if (values.Count() != 0) { //TODO: this prevents older values from different devices to be stored, check for device and time (not only for time) DateTime latest = values.Select(p => p.Timestamp).Max(); valueItemsToSave = model.Items.Where(d => d.Timestamp > latest).ToList(); } List <Device> deviceList = (List <Device>) await _dbContext.QueryDevicesAsync(model.DeviceName); Device device; if (deviceList.Count() == 0) { device = new Device(model.DeviceName, "not defined", "not defined", Enums.Depth.NotDefined); await _deviceStorage.SaveNewDeviceToDbAsync(device); } else { //TODO check for every value by its timestamp, which device is the correct one and do not just take the latest. device = deviceList.MaxBy(p => p.TimeOfCreation); } List <Value> valuesToSave = new List <Value>(); foreach (var value in valueItemsToSave) { valuesToSave.Add(new Value(value.Timestamp, device, value.Data, sensorType)); } await _dbContext.Values.AddRangeAsync(valuesToSave); await _dbContext.SaveChangesAsync(); }
public async Task <JsonResult> GetValuesBetweenTwoDatesAsJsonAsync(string deviceId, Enums.SensorTypes sensorType, DateTime start, DateTime end) { throw new NotImplementedException(); }
public static Task <T> QueryValuesAsync <T>(this LakeLabDbContext context, Func <IQueryable <Value>, Task <T> > queryShaper, Enums.SensorTypes sensorType) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (queryShaper == null) { throw new ArgumentNullException(nameof(queryShaper)); } return(queryShaper(context.Values.Include(p => p.Device).Where(p => p.SensorType == sensorType))); }
public ValueModel(string deviceName, Enums.SensorTypes sensorType) { DeviceName = deviceName; SensorType = sensorType; }