From 10bc4d0f275f5183da672ece1d7dfa5da8375b3f Mon Sep 17 00:00:00 2001 From: marcinzelent Date: Mon, 27 Nov 2017 12:41:19 +0100 Subject: Refactored code and added method in controller for getting readings from last week. --- .../Controllers/ReadingsController.cs | 49 +++++++++++++--------- 1 file changed, 30 insertions(+), 19 deletions(-) (limited to 'AirPollutionWebApi/Controllers/ReadingsController.cs') diff --git a/AirPollutionWebApi/Controllers/ReadingsController.cs b/AirPollutionWebApi/Controllers/ReadingsController.cs index 19b87e7..480d8c0 100644 --- a/AirPollutionWebApi/Controllers/ReadingsController.cs +++ b/AirPollutionWebApi/Controllers/ReadingsController.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System; using System.Web.Http; using AirPollutionWebApi.Models; using AirPollutionWebApi.Singletons; @@ -9,15 +9,19 @@ namespace AirPollutionWebApi.Controllers { public ReadingsController() { } - public IEnumerable GetAllReadings() + public IHttpActionResult GetAllReadings() { - var readings = SqlOperator.GetAllReadings(); - return readings; + 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 reading = SqlOperator.GetReadingById(id); + { + var command = $"SELECT * FROM Readings WHERE Id={id}"; + var reading = SqlOperator.GetReadings(command)[0]; if (reading != null) return Ok(reading); else return NotFound(); @@ -25,20 +29,25 @@ namespace AirPollutionWebApi.Controllers [Route("api/Readings/latest")] public IHttpActionResult GetLatestReading() - { - var readings = SqlOperator.GetAllReadings(); - Reading latestReading = null; - - foreach(var reading in readings) - { - if (latestReading == null) latestReading = reading; - if (reading.TimeStamp > latestReading.TimeStamp) - latestReading = reading; - } + { + var command = "SELECT MAX(TimeStamp) FROM Readings"; + var reading = SqlOperator.GetReadings(command)[0]; - if (latestReading != null) return Ok(latestReading); + 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) { @@ -61,8 +70,10 @@ namespace AirPollutionWebApi.Controllers } public IHttpActionResult DeleteReading(int id) - { - Reading reading = SqlOperator.GetReadingById(id); + { + var command = $"SELECT * FROM Readings WHERE Id={id}"; + + Reading reading = SqlOperator.GetReadings(command)[0]; if (reading == null) { return NotFound(); -- cgit v1.2.3