public IHttpActionResult GetSensorConnections(int networkId, int sensorId, int page = 1, int pageSize = 30) { _credentials.SetCredentials(Request.Headers.Authorization.Parameter); var userId = _userRep.Get(_credentials.Email, _credentials.Password).Id; if (!_networkRep.GetAll().Any(n => n.Id == networkId && n.User_Id == userId)) { var errorMessage = _messages.GetMessage(Custom.NotFound, "Network", "Id"); return(NotFound(errorMessage)); } var sensor = _sensorRep.Get(sensorId); if (sensor == null) { var errorMessage = _messages.GetMessage(Custom.NotFound, "Sensor", "Id"); return(NotFound(errorMessage)); } if (page < 1) { page = 1; } if (pageSize < 1) { pageSize = 30; } var connections = _connectionRep.GetAll() .Where(c => c.Sensor_Id == sensorId); var totalCount = connections.Count(); var pageCount = (int)Math.Ceiling((float)totalCount / pageSize); var results = _gatewayRep.GetAll() .Join(connections, g => g.Id, c => c.Gateway_Id, (g, c) => g) .Skip(pageSize * (page - 1)) .Take(pageSize) .Select(p => _mapper.Map <GatewayModelGet>(p)) .ToList(); return(Ok("GetGatewayConnections", page, pageSize, pageCount, totalCount, results)); }
public IHttpActionResult Add(SensorReadingModelPost sensorReadingModel) { if (sensorReadingModel == null) { var errorMessage = _messages.GetMessage(Generic.NullObject); return(BadRequest(errorMessage)); } _throttler.ThrottlerSetup(sensorReadingModel.SensorAddress, 1, 3); if (_throttler.RequestShouldBeThrottled()) { return(TooManyRequests(_throttler)); } var sensor = _sensorRep.GetAll() .Where(s => s.Address == sensorReadingModel.SensorAddress) .SingleOrDefault(); if (sensor != null) { var gateway = _gatewayRep.GetAll() .SingleOrDefault(g => g.Address == sensorReadingModel.GatewayAddress); if (gateway == null) { var errorMessage = _messages.GetMessage(Custom.NotFound, "Gateway", "Address"); return(NotFound(errorMessage)); } var sensorReading = _mapper.Map <SensorReading>(sensorReadingModel); sensorReading.Sensor_Id = sensor.Id; sensorReading.InsertDate = _dateTime.GetDateOffSet(); _readingRep.Add(sensorReading); var pending = TheSensorIntervalPending .GetPendingMember(sensor.Id); //Check if the pending exists if (pending != null) { _mapper.Map(pending, sensor); TheSensorIntervalPending.ClearPending(pending); } sensor.Active = true; sensor.LastReadingDate = sensorReading.ReadingDate; sensor.LastInsertDate = sensorReading.InsertDate; _sensorRep.Update(sensor); var address = sensorReadingModel.SensorAddress; Hub.Clients.Group(address).refreshReadings(); //add the gateway connections if (!_connectionRep.GetAll() .Any( c => c.Gateway_Id == gateway.Id && c.Sensor_Id == sensor.Id) ) { var connection = _connectionService.Create(gateway.Id, sensor.Id); _connectionRep.Add(connection); } gateway.LastSensorDate = sensorReading.ReadingDate; _gatewayRep.Update(gateway); var createdReading = _mapper.Map <SensorReadingModelGet>(sensorReading); return(Created($"api/networks/{sensor.Network_Id}/sensors/{sensor.Id}/readings", createdReading)); } else { var errorMessage = _messages.GetMessage(Custom.NotFound, "Sensor", "Address"); return(NotFound(errorMessage)); } }