aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarcinzelent <zelent.marcin@gmail.com>2018-03-16 21:40:28 +0100
committermarcinzelent <zelent.marcin@gmail.com>2018-03-16 21:40:28 +0100
commit08e7a82cc7b237e550c0236bebd4f41c3c3f4acf (patch)
tree30e2320d62f2bf3981120ad76f2de92efec1e8f5 /pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs
parent9441b9d8b3035dc3142234dd13a1bcea21e72749 (diff)
Moved API to separate folder.
Diffstat (limited to 'pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs')
-rw-r--r--pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs b/pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs
new file mode 100644
index 0000000..adf4d5d
--- /dev/null
+++ b/pollutometer-api/PollutometerWebApi/Controllers/ReadingsController.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Web.Http;
+using PollutometerWebApi.Models;
+
+namespace PollutometerWebApi.Controllers
+{
+ public class ReadingsController : ApiController
+ {
+ public ReadingsController() {}
+
+ public IHttpActionResult GetAllReadings()
+ {
+ var command = "SELECT * FROM Readings";
+ var readings = SqlOperator.GetReadings(command);
+
+ if (readings.Count > 0) return Ok(readings);
+ else return NotFound();
+ }
+
+ public IHttpActionResult GetReading(int id)
+ {
+ var command = $"SELECT * FROM Readings WHERE Id={id}";
+ var readings = SqlOperator.GetReadings(command);
+
+ if (readings.Count == 1) return Ok(readings[0]);
+ else return NotFound();
+ }
+
+ [Route("api/Readings/latest")]
+ public IHttpActionResult GetLatestReading()
+ {
+ var command = "SELECT * FROM Readings " +
+ "WHERE TimeStamp IN(SELECT MAX(TimeStamp) FROM Readings)";
+ var reading = SqlOperator.GetReadings(command)[0];
+
+ if (reading != null) return Ok(reading);
+ else return NotFound();
+ }
+
+ [Route("api/Readings/lastweek")]
+ public IHttpActionResult GetReadingsFromLastWeek()
+ {
+ var timeNow = DateTimeOffset.Now.ToUnixTimeSeconds();
+ var command = "SELECT * FROM Readings " +
+ $"WHERE TimeStamp BETWEEN {timeNow-7*24*3600} AND {timeNow}";
+ var readings = SqlOperator.GetReadings(command);
+
+ if (readings.Count > 0) return Ok(readings);
+ else return NotFound();
+ }
+
+ public IHttpActionResult PutReading(int id, Reading reading)
+ {
+ if (reading != null)
+ {
+ SqlOperator.PutReading(id, reading);
+ return Ok();
+ }
+ else return BadRequest();
+ }
+
+ public IHttpActionResult PostReading(Reading reading)
+ {
+ if (reading != null)
+ {
+ SqlOperator.PostReading(reading);
+ var aqi = AqiCalculator.CalculateAqi(reading);
+ if (aqi.Value >= 151)
+ EmailSender.SendEmail(aqi);
+ return Ok(reading);
+ }
+ else return BadRequest();
+ }
+
+ public IHttpActionResult DeleteReading(int id)
+ {
+ var command = $"SELECT * FROM Readings WHERE Id={id}";
+ var readings = SqlOperator.GetReadings(command);
+ if (readings.Count == 0) return NotFound();
+ SqlOperator.DeleteReading(id);
+
+ return Ok(readings[0]);
+ }
+ }
+} \ No newline at end of file