From 4136546b927f78a475cb36b442c051ecaadb605e Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Mon, 27 Jan 2020 23:39:17 +0000
Subject: [PATCH] Show when the vehicles were last seen in TTSS

---
 lib/Database.php |   42 ++++++++++++++++++++++++++++++------------
 1 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/lib/Database.php b/lib/Database.php
index 22cc51c..e83f4ab 100644
--- a/lib/Database.php
+++ b/lib/Database.php
@@ -10,13 +10,23 @@
 		$this->pdo = new PDO('sqlite:'.$file);
 		$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 		
-		$this->pdo->query('CREATE TABLE IF NOT EXISTS vehicles (
+		$this->pdo->query('CREATE TABLE IF NOT EXISTS vehicles2 (
 			id INT PRIMARY KEY,
 			num INT UNIQUE,
-			weight INT
+			weight INT,
+			line VARCHAR,
+			date INT
 		)');
+		try {
+			$this->beginTransaction();
+			$this->pdo->query('INSERT INTO vehicles2 SELECT id, num, weight, \'?\', \''.time().'\' FROM vehicles');
+			$this->commit();
+			$this->pdo->query('DROP TABLE vehicles');
+		} catch(PDOException $e) {
+			$this->rollback();
+		}
 		
-		$this->addStatement = $this->pdo->prepare('INSERT OR REPLACE INTO vehicles (id, num, weight) VALUES (:id, :num, :weight)');
+		$this->addStatement = $this->pdo->prepare('INSERT OR REPLACE INTO vehicles2 (id, num, weight, line, date) VALUES (:id, :num, :weight, :line, :date)');
 		
 		$this->_cacheClear();
 	}
@@ -35,7 +45,7 @@
 	
 	protected function _cachePopulate() {
 		if($this->cacheId === NULL) {
-			$st = $this->pdo->prepare('SELECT * FROM vehicles');
+			$st = $this->pdo->prepare('SELECT * FROM vehicles2');
 			$st->execute();
 			$result = $st->fetchAll(PDO::FETCH_ASSOC);
 			
@@ -58,9 +68,14 @@
 		$this->cacheNum = NULL;
 	}
 	
-	public function getAll() {
+	public function getAllById() {
 		$this->_cachePopulate();
 		return $this->cacheId;
+	}
+	
+	public function getAllByNum() {
+		$this->_cachePopulate();
+		return $this->cacheNum;
 	}
 	
 	public function getById($id) {
@@ -74,25 +89,28 @@
 	}
 	
 	public function clear() {
-		$this->pdo->query('DELETE FROM vehicles');
+		$this->pdo->query('DELETE FROM vehicles2');
 		$this->_cacheClear();
 	}
 	
-	public function add($id, $num, $weight) {
+	public function add($id, $num, $weight, $line = NULL, $date = NULL) {
 		$vehicle = [
 			'id' => (string)$id,
 			'num' => (string)$num,
-			'weight' => (string)$weight
+			'weight' => (string)$weight,
+			'line' => (string)($line ?? ''),
+			'date' => (string)($date ?? time()),
 		];
 		$this->addStatement->execute($vehicle);
 		$this->_cacheAdd($vehicle);
 	}
 	
-	public function addMapping($mapping) {
+	public function addMapping($vehiclesMapping, Mapper $mapper) {
 		$this->beginTransaction();
-		$weight = count($mapping);
-		foreach($mapping as $id => $num) {
-			$this->add($id, $num, $weight);
+		$weight = count($vehiclesMapping);
+		foreach($vehiclesMapping as $id => $num) {
+			$trip = $mapper->getTTSSVehicleTrip($id);
+			$this->add($id, $num, $weight, ($trip['line'] ?? '?') . ' ' . ($trip['direction'] ?? '?'));
 		}
 		$this->commit();
 	}

--
Gitblit v1.9.1