示例#1
0
        public PlotModel(string deviceName, Enums.SensorTypes sensorType)
        {
            if (deviceName == null)
            {
                throw new ArgumentNullException(nameof(deviceName));
            }

            DeviceName = deviceName;
            SensorType = sensorType;
        }
示例#2
0
        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();
 }
示例#5
0
        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)));
        }
示例#6
0
 public ValueModel(string deviceName, Enums.SensorTypes sensorType)
 {
     DeviceName = deviceName;
     SensorType = sensorType;
 }