public IActionResult CreateSensorData([FromBody] TheThingsNetworkUplinkBodyDto ttnBody) { Sensor sensor = _sensorInfoRepository.GetSensor(ttnBody.dev_id, false); if (sensor == null) { sensor = new Sensor { Description = ttnBody.dev_id }; _sensorInfoRepository.AddSensor(sensor); if (!_sensorInfoRepository.Save()) { return(StatusCode(500, "our server did an oopsie")); } } dynamic payload_fields = JsonConvert.DeserializeObject(ttnBody.payload_fields.ToString()); var lightValue = payload_fields.light; if (lightValue != null) { LightForCreationDto lightFromTtn = new LightForCreationDto() { Value = lightValue }; var finalLight = Mapper.Map <Entities.Light>(lightFromTtn); finalLight = _sensorActionDetermination.AutofillLight(finalLight); sensor = _sensorInfoRepository.GetSensor(ttnBody.dev_id, false); _sensorInfoRepository.AddLightForSensor(sensor.Id, finalLight); if (!_sensorInfoRepository.Save()) { return(StatusCode(500, "our server did an oopsie")); } } TheThingsNetworkDownlinkBodyDto downlinkBody = new TheThingsNetworkDownlinkBodyDto() { dev_id = ttnBody.dev_id, confirmed = false, payload_raw = "01", port = 1 }; _uplinkService.QueueDownlink(ttnBody.downlink_url, downlinkBody); return(Ok()); }
public IActionResult CreateLight([FromRoute] Guid sensorId, [FromBody] LightForCreationDto lightModelFromRequest) { try { if (lightModelFromRequest == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest()); } if (!_sensorInfoRepository.SensorExists(sensorId)) { _log.Warn($"SensorModel {sensorId} does not exist"); return(NotFound()); } var finalLight = Mapper.Map <Entities.Light>(lightModelFromRequest); finalLight = _sensorActionDetermination.AutofillLight(finalLight); _sensorInfoRepository.AddLightForSensor(sensorId, finalLight); if (!_sensorInfoRepository.Save()) { return(StatusCode(500, "our server did an oopsie")); } var lightModelForStore = Mapper.Map <Models.LightDto>(finalLight); return(CreatedAtAction("GetLight", new { sensorId, id = lightModelForStore.Id }, lightModelForStore)); } catch (Exception e) { _log.Error(e, $"Exception while posting light for {sensorId}"); return(StatusCode(500, "our server did an oopsie")); } }