Newer
Older
using Microsoft.AspNetCore.Mvc;
using Public_API.Server.DAL;
using Public_API.Shared.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace Public_API.Server.Controllers
{
[Route("[controller]")]
[ApiController]
public class APIController : ControllerBase
{
private ApiContext db = new ApiContext();
public Sensor? getSensorByUID(string sensorUID)
{
return db.Sensor.Where(s => s.sensorUID.Equals(sensorUID)).FirstOrDefault();
}
[HttpGet("GetSensorByID/{sensorID}")]
public Sensor? getSensorByID(int sensorID)
{
return db.Sensor.Where(s => s.sensorID.Equals(sensorID)).FirstOrDefault();
}
// TODO Post
// TODO Auth required
// GET api/sensor/logValue/...
[HttpGet("sensor/logValue/{sensorID}/{temperature}/{humidity}/{co2}/{ppm25}")]
public HttpResponseMessage Get(int sensorID, string temperature, string humidity, string co2, string ppm25)
{
// TODO Error Handling!
//SensorValue sensorValue = new SensorValue(sensorID, decimal.Parse(temperature), decimal.Parse(humidity), decimal.Parse(co2), decimal.Parse(ppm25));
//db.SensorValue.Add(sensorValue);
//db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.OK);
}
// POST api/sensor/reading (With POST JSON Data)
[HttpPost("sensor/reading")]
public HttpResponseMessage Post([FromBody] SensorResponse response)
{
var sensor = getSensorByUID(response.sensorMetadata.uid);
if (sensor == null) {
return new HttpResponseMessage(HttpStatusCode.NotFound);
}
//// TODO Error Handling!
SensorValue sensorValue = new SensorValue(
sensor.sensorID,
DateTimeOffset.FromUnixTimeSeconds(response.sensorMetadata.sampleTime).DateTime,
(decimal)response.sensorReading.sht.temperature, // SHT
(decimal)response.sensorReading.sht.humidity, // SHT
0, // TODO C02
Callum Inglis
committed
(decimal)response.sensorReading.ppm.p10, // PPM
(decimal)response.sensorReading.ppm.p25, // PPM
(decimal)response.sensorReading.ppm.p100 // PPM
);
db.SensorValue.Add(sensorValue);
db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpGet("LatestData")]
public IEnumerable<vw_SensorData> GetLatestSensorData()
{
return db.vw_SensorData.OrderByDescending(d => d.dateTime).Take(100).ToArray();
}
[HttpGet("GetSensorList")]
public IEnumerable<Sensor> GetSensors()
{
return db.Sensor.OrderBy(d => d.friendlyName).ToArray();
}
/* [HttpPost("G")]
public ActionResult onGraphPost(String sensor)
{
//return new RedirectToPageResult("graph", getSensorByID(sensor));
}*/
// DELETE api/<APIController>/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}