aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Zelent <zelent.marcin@gmail.com>2018-03-16 17:48:44 +0100
committerMarcin Zelent <zelent.marcin@gmail.com>2018-03-16 17:48:44 +0100
commited01011dfb563e7d8ab13b6a0718eed7bf857880 (patch)
tree104a22a75d287d0607668eea3177eec626ab3f80 /pollutometer-php/src/AppBundle/Controller
parent1d24e941dc7d9da10c9045203ae18f5234c774f5 (diff)
Moved PHP website to separate directory.
Diffstat (limited to 'pollutometer-php/src/AppBundle/Controller')
-rw-r--r--pollutometer-php/src/AppBundle/Controller/AllDataAverageController.php66
-rw-r--r--pollutometer-php/src/AppBundle/Controller/AllDataController.php43
-rw-r--r--pollutometer-php/src/AppBundle/Controller/HomeController.php60
-rw-r--r--pollutometer-php/src/AppBundle/Controller/LastWeekDataAverageController.php66
-rw-r--r--pollutometer-php/src/AppBundle/Controller/LastWeekDataController.php42
-rw-r--r--pollutometer-php/src/AppBundle/Controller/NewDataController.php42
-rw-r--r--pollutometer-php/src/AppBundle/Controller/TrainScheduleController.php110
7 files changed, 429 insertions, 0 deletions
diff --git a/pollutometer-php/src/AppBundle/Controller/AllDataAverageController.php b/pollutometer-php/src/AppBundle/Controller/AllDataAverageController.php
new file mode 100644
index 0000000..4434d47
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/AllDataAverageController.php
@@ -0,0 +1,66 @@
+<?php
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+
+
+class AllDataAverageController extends Controller
+{
+ /**
+ * @Route("/AllDataAverage", name="AllDataAverage")
+ */
+
+ public function GetAllDataAverage()
+ {
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+ $readings = array();
+ $results = array();
+
+ usort($data, function($a,$b){
+ return $a['TimeStamp'] - $b['TimeStamp'];
+ });
+
+ foreach($data as $index => $item)
+ {
+ $data[$index]['TimeStamp'] = gmdate('d F l', $item['TimeStamp']);
+ $readings[$data[$index]['TimeStamp']][] = $data[$index];
+ }
+
+ foreach ($readings as $key => $item)
+ {
+ $gasAverage = array('Co' => 0, 'No' => 0, 'So' => 0);
+ foreach ($readings[$key] as $index => $values)
+ {
+ $gasAverage['Co'] += $readings[$key][$index]['Co'];
+ $gasAverage['No'] += $readings[$key][$index]['No'];
+ $gasAverage['So'] += $readings[$key][$index]['So'];
+
+ if($index === count($readings[$key]) - 1)
+ {
+ $gasAverage['Co'] /= $index + 1;
+ $gasAverage['No'] /= $index + 1;
+ $gasAverage['So'] /= $index + 1;
+ }
+ $results[$key] = $gasAverage;
+ }
+ }
+
+ $data = json_encode($results);
+
+ $response = new Response($data);
+ $response->headers->set('Content-Type', 'application/json');
+ return $response;
+ }
+} \ No newline at end of file
diff --git a/pollutometer-php/src/AppBundle/Controller/AllDataController.php b/pollutometer-php/src/AppBundle/Controller/AllDataController.php
new file mode 100644
index 0000000..b45d2c9
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/AllDataController.php
@@ -0,0 +1,43 @@
+<?php
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+
+
+class AllDataController extends Controller
+{
+ /**
+ * @Route("/AllData", name="AllData")
+ */
+
+ public function GetAllData()
+ {
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+
+
+ usort($data, function($a,$b){
+ return $a['TimeStamp'] - $b['TimeStamp'];
+ });
+
+ foreach($data as $index => $item)
+ {
+ $data[$index]['TimeStamp'] = gmdate("l jS \of F Y h:i:s A", $item['TimeStamp']);
+ }
+
+ $parametersToTwig = array("data" => $data);
+
+ return $this->render('default/AllData.html.twig',$parametersToTwig);
+
+ }
+} \ No newline at end of file
diff --git a/pollutometer-php/src/AppBundle/Controller/HomeController.php b/pollutometer-php/src/AppBundle/Controller/HomeController.php
new file mode 100644
index 0000000..d84ab76
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/HomeController.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: andy
+ * Date: 11/23/17
+ * Time: 10:21 AM
+ */
+
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use AppBundle\Utils\Aqi;
+
+class HomeController extends Controller
+{
+ /**
+ * @Route("/", name="homepage")
+ */
+
+
+ public function numberAction(Aqi $aqi)
+ {
+ $table = array(
+ 'Co' => array('breakpoints' => [0, 4.4, 4.5, 9.4, 9.5, 12.4, 12.5, 15.4, 15.5, 30.4, 30.5, 40.4, 40.5, 50.4],
+ 'aq' => [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 400, 401, 500]),
+ 'So' => array('breakpoints' => [0.000, 0.034, 0.035, 0.144, 0.145, 0.224, 0.225, 0.304, 0.305, 0.604, 0.605, 0.804, 0.805, 1.004],
+ 'aq' => [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 400, 401, 500]),
+ 'No' => array('breakpoints' => [0,0.05,0.08,0.10,0.15,0.20,0.25 ,0.31,0.65, 1.24, 1.25, 1.64, 1.65, 2.04],
+ 'aq' => [0 ,50 ,51 ,100 ,101 ,150 ,151,200,201, 300, 301, 400, 401, 500])
+ );
+
+
+ $tableObj = json_decode(json_encode($table));
+
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings/latest");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+ $data['TimeStamp'] = gmdate("l jS \of F Y h:i:s A", $data['TimeStamp']);
+
+ $arr = [];
+ $CO = is_nan($aqi->calculateAQI("Co", $data['Co'], $tableObj)) ? 0 : $aqi->calculateAQI("Co", $data['Co'], $tableObj);
+ $SO = is_nan($aqi->calculateAQI("So", $data['So'], $tableObj)) ? 0 : $aqi->calculateAQI("So", $data['So'], $tableObj);
+ $NO = is_nan($aqi->calculateAQI("No", $data['No'], $tableObj)) ? 0 : $aqi->calculateAQI("No", $data['No'], $tableObj);
+
+ array_push($arr, $CO, $SO, $NO);
+ $max = max($arr);
+ $data['Aqi'] = $max;
+
+ return $this->render('default/index.html.twig', $data);
+ }
+}
diff --git a/pollutometer-php/src/AppBundle/Controller/LastWeekDataAverageController.php b/pollutometer-php/src/AppBundle/Controller/LastWeekDataAverageController.php
new file mode 100644
index 0000000..e25b0a8
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/LastWeekDataAverageController.php
@@ -0,0 +1,66 @@
+<?php
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+
+
+class LastWeekDataAverageController extends Controller
+{
+ /**
+ * @Route("/LastWeekDataAverage", name="LastWeekDataAverage")
+ */
+
+ public function GetLastWeekAverageData()
+ {
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings/lastweek");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+ $readings = array();
+ $results = array();
+
+ usort($data, function($a,$b){
+ return $a['TimeStamp'] - $b['TimeStamp'];
+ });
+
+ foreach($data as $index => $item)
+ {
+ $data[$index]['TimeStamp'] = gmdate('d F l', $item['TimeStamp']);
+ $readings[$data[$index]['TimeStamp']][] = $data[$index];
+ }
+
+ foreach ($readings as $key => $item)
+ {
+ $gasAverage = array('Co' => 0, 'No' => 0, 'So' => 0);
+ foreach ($readings[$key] as $index => $values)
+ {
+ $gasAverage['Co'] += $readings[$key][$index]['Co'];
+ $gasAverage['No'] += $readings[$key][$index]['No'];
+ $gasAverage['So'] += $readings[$key][$index]['So'];
+
+ if($index === count($readings[$key]) - 1)
+ {
+ $gasAverage['Co'] /= $index + 1;
+ $gasAverage['No'] /= $index + 1;
+ $gasAverage['So'] /= $index + 1;
+ }
+ $results[$key] = $gasAverage;
+ }
+ }
+
+ $data = json_encode($results);
+
+ $response = new Response($data);
+ $response->headers->set('Content-Type', 'application/json');
+ return $response;
+ }
+} \ No newline at end of file
diff --git a/pollutometer-php/src/AppBundle/Controller/LastWeekDataController.php b/pollutometer-php/src/AppBundle/Controller/LastWeekDataController.php
new file mode 100644
index 0000000..7b5d993
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/LastWeekDataController.php
@@ -0,0 +1,42 @@
+<?php
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+
+
+class LastWeekDataController extends Controller
+{
+ /**
+ * @Route("/LastWeekData", name="LastWeekData")
+ */
+
+ public function GetAllData()
+ {
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings/lastweek");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+
+
+ usort($data, function($a,$b){
+ return $a['TimeStamp'] - $b['TimeStamp'];
+ });
+
+ foreach($data as $index => $item)
+ {
+ $data[$index]['TimeStamp'] = gmdate("l jS \of F Y h:i:s A", $item['TimeStamp']);
+ }
+
+ $parametersToTwig = array("data" => $data);
+
+ return $this->render('default/LastWeekData.html.twig',$parametersToTwig);
+ }
+} \ No newline at end of file
diff --git a/pollutometer-php/src/AppBundle/Controller/NewDataController.php b/pollutometer-php/src/AppBundle/Controller/NewDataController.php
new file mode 100644
index 0000000..5dd440f
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/NewDataController.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: andy
+ * Date: 11/23/17
+ * Time: 10:21 AM
+ */
+
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+
+class NewDataController extends Controller
+{
+ /**
+ * @Route("/latest")
+ */
+
+ public function getLatestData()
+ {
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings/latest");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $data = json_decode($resp, true);
+ $data['TimeStamp'] = gmdate("l jS \of F Y h:i:s A", $data['TimeStamp']);
+ $data = json_encode($data);
+
+ $response = new Response($data);
+ $response->headers->set('Content-Type', 'application/json');
+ return $response;
+ }
+
+}
diff --git a/pollutometer-php/src/AppBundle/Controller/TrainScheduleController.php b/pollutometer-php/src/AppBundle/Controller/TrainScheduleController.php
new file mode 100644
index 0000000..a6b517d
--- /dev/null
+++ b/pollutometer-php/src/AppBundle/Controller/TrainScheduleController.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: marcin
+ * Date: 07/12/17
+ * Time: 10:33
+ */
+
+namespace AppBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use AppBundle\Utils\Aqi;
+
+class TrainScheduleController extends Controller
+{
+ /**
+ * @Route("/TrainSchedule")
+ */
+
+ public function GetSchedule()
+ {
+ $url = "http://xmlopen.rejseplanen.dk/bin/rest.exe/multiDepartureBoard?id1=008600617&date=" .
+ date("d.m.Y") .
+ "&time=00%3A00&useBus=0&format=json";
+
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, $url);
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $trains = json_decode($resp, true);
+ $trains = $trains['MultiDepartureBoard']['Departure'];
+
+ // Get cURL resource
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, "https://pollutometerapi.azurewebsites.net/api/Readings/lastweek");
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // Assuming you're requesting JSON
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ // Send the request & save response to $resp
+ $resp = curl_exec($curl);
+ // Close request to clear up some resources
+ curl_close($curl);
+
+ $readings = json_decode($resp, true);
+
+
+ for ($i = 0; $i < count($trains); $i++) {
+ $closest = 5301590400;
+ $time = $trains[$i]['time'];
+ $date = $trains[$i]['date'];
+ $datesplit = explode(".", $date);
+ $datetime = $datesplit[0] . "." . $datesplit[1] . ".20" . $datesplit[2] . " " . $time;
+ $trainTimeStamp = strtotime($datetime) + 3600;
+
+ if($trainTimeStamp > time())
+ {
+ $trains[$i]['direction'] = 0;
+ continue;
+ }
+
+ foreach ($readings as $reading) {
+ if (abs($reading['TimeStamp'] - $trainTimeStamp) < abs($closest - $trainTimeStamp))
+ $closest = $reading['TimeStamp'];
+ }
+
+ $closestReading = $readings[0];
+ foreach ($readings as $reading)
+ {
+ if($reading['TimeStamp'] == $closest) $closestReading = $reading;
+ }
+ $trains[$i]['direction'] = $this->getAqi($closestReading);
+ }
+
+ $parametersToTwig = array("data" => $trains);
+
+ return $this->render('default/TrainSchedule.html.twig', $parametersToTwig);
+ }
+
+ private function getAqi(array $data)
+ {
+ $aqi = new Aqi();
+
+ $table = array(
+ 'Co' => array('breakpoints' => [0, 4.4, 4.5, 9.4, 9.5, 12.4, 12.5, 15.4, 15.5, 30.4, 30.5, 40.4, 40.5, 50.4],
+ 'aq' => [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 400, 401, 500]),
+ 'So' => array('breakpoints' => [0.000, 0.034, 0.035, 0.144, 0.145, 0.224, 0.225, 0.304, 0.305, 0.604, 0.605, 0.804, 0.805, 1.004],
+ 'aq' => [0, 50, 51, 100, 101, 150, 151, 200, 201, 300, 301, 400, 401, 500]),
+ 'No' => array('breakpoints' => [0,0.05,0.08,0.10,0.15,0.20,0.25 ,0.31,0.65, 1.24, 1.25, 1.64, 1.65, 2.04],
+ 'aq' => [0 ,50 ,51 ,100 ,101 ,150 ,151,200,201, 300, 301, 400, 401, 500])
+ );
+
+ $tableObj = json_decode(json_encode($table));
+
+ $arr = [];
+ $CO = is_nan($aqi->calculateAQI("Co", $data['Co'], $tableObj)) ? 0 : $aqi->calculateAQI("Co", $data['Co'], $tableObj);
+ $SO = is_nan($aqi->calculateAQI("So", $data['So'], $tableObj)) ? 0 : $aqi->calculateAQI("So", $data['So'], $tableObj);
+ $NO = is_nan($aqi->calculateAQI("No", $data['No'], $tableObj)) ? 0 : $aqi->calculateAQI("No", $data['No'], $tableObj);
+
+ array_push($arr, $CO, $SO, $NO);
+ $max = max($arr);
+
+ return $max;
+ }
+} \ No newline at end of file