Example #1
0
        public async Task Handle(SaveSensorDataEvent @event)
        {
            // Validate
            if (string.IsNullOrEmpty(@event.SensorKey) || !double.TryParse(@event.Value.ToString(), out _))
            {
                return;
            }

            // Save in DB
            var entity = new SensorData
            {
                SensorKey = @event.SensorKey,
                Value     = @event.Value.ToString(CultureInfo.InvariantCulture),
                TimeStamp = @event.Time ?? DateTime.UtcNow
            };

            SensorDataValidatorExecutor.Execute(entity, true);

            var created = await _sensorDataRepository.CreateAsync(entity);

            var data = JsonConvert.SerializeObject(created);

            // Notify UI via SignalR (uses 'sensor' topic)
            await _hubContext.Clients.All.SendAsync(Constants.Topics.Sensor, data);
        }
Example #2
0
 public override Task <ServiceResult <SensorData> > Update(string id, SensorData entity)
 {
     SensorDataValidatorExecutor.Execute(entity, true);
     if (string.IsNullOrWhiteSpace(entity.Id))
     {
         entity.Id = id;
     }
     return(base.Update(id, entity));
 }
Example #3
0
        public override Task <ServiceResult <SensorData> > Add(SensorData entity)
        {
            SensorDataValidatorExecutor.Execute(entity, true);

            // If no date, add current one
            if (entity.TimeStamp == new DateTime())
            {
                entity.TimeStamp = DateTime.UtcNow;
            }

            return(base.Add(entity));
        }