Refactoring of route list page
[busui.git] / include / db / route-dao.inc.php
blob:a/include/db/route-dao.inc.php -> blob:b/include/db/route-dao.inc.php
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -12,19 +12,7 @@
 }
 function getRoutes() {
     	global $conn;
-        $conditions = Array();
-        if ($timingPointsOnly) $conditions[] = "substr(stop_code,1,2) != 'Wj'";
-        if ($firstLetter != "") $conditions[] = "substr(stop_name,1,1) = '$firstLetter'";
-	$query = "Select * from routes";
-        if (sizeof($conditions) > 0) {
-            if (sizeof($conditions) > 1) {
-                $query .= " Where ".implode(" AND ",$conditions)." ";
-            }
-            else {
-                $query .= " Where ".$conditions[0]." ";
-            }
-        }
-        $query .= " order by route_short_name;";
+	$query = "Select * from routes order by route_short_name;";
         debug($query,"database");
 	$result = pg_query($conn, $query);
 	if (!$result) {
@@ -34,9 +22,14 @@
 	return pg_fetch_all($result);    
 }
 
-function findRouteByNumber($routeNumber) {
+function getRoutesByNumber($routeNumber = "") {
   	global $conn;
-       	$query = "Select * from routes where route_short_name = '$routeNumber';";
+        if ($routeNumber != "") {
+       	$query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes  join trips on trips.route_id =
+routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where route_short_name = '$routeNumber' order by route_short_name;";
+        } else {
+            $query = "SELECT DISTINCT route_short_name from routes order by route_short_name";
+        }
         debug($query,"database");
 	$result = pg_query($conn, $query);
 	if (!$result) {
@@ -57,7 +50,71 @@
 		databaseError(pg_result_error($result));
 		return Array();
 	}
-	return pg_fetch_assoc($result);       /*
+	return pg_fetch_assoc($result);       
   }
 
+function getRoutesByDestination($destination = "", $service_period = "") {
+    global $conn;
+         if ($service_period == "") $service_period = service_period();
+         if ($destination != "")  {
+             $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id
+FROM stop_times join trips on trips.trip_id =
+stop_times.trip_id join routes on trips.route_id = routes.route_id
+WHERE route_long_name = '$destination' AND  service_id='$service_period' order by route_short_name";
+         } else {
+        $query = "SELECT DISTINCT route_long_name
+FROM stop_times join trips on trips.trip_id =
+stop_times.trip_id join routes on trips.route_id = routes.route_id
+WHERE service_id='$service_period' order by route_long_name";
+    }
+        debug($query,"database");
+	$result = pg_query($conn, $query);
+	if (!$result) {
+		databaseError(pg_result_error($result));
+		return Array();
+	}
+	return pg_fetch_all($result);
+}
+
+function getRoutesBySuburb($suburb, $service_period = "") {
+         if ($service_period == "") $service_period = service_period();
+    global $conn;
+        $query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name
+FROM stop_times join trips on trips.trip_id = stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE zone_id LIKE '%$suburb;%' AND service_id='$service_period' ORDER BY route_short_name";
+        debug($query,"database");
+	$result = pg_query($conn, $query);
+	if (!$result) {
+		databaseError(pg_result_error($result));
+		return Array();
+	}
+	return pg_fetch_all($result);
+}
+
+function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) {
+
+        
+                 if ($service_period == "") $service_period = service_period();
+                  if ($limit != "") $limit = " LIMIT $limit "; 
+    global $conn;
+        $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,
+        min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance
+FROM stop_times
+join trips on trips.trip_id = stop_times.trip_id
+join routes on trips.route_id = routes.route_id
+join stops on stops.stop_id = stop_times.stop_id
+WHERE service_id='$service_period'
+AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), $distance, FALSE)
+        group by service_id,trips.route_id,route_short_name,route_long_name
+        order by distance $limit";
+        debug($query,"database");
+	$result = pg_query($conn, $query);
+	if (!$result) {
+		databaseError(pg_result_error($result));
+		return Array();
+	}
+	return pg_fetch_all($result);
+}
 ?>