1 |
574d6347
|
horkym
|
<?php
|
2 |
|
|
|
3 |
|
|
require_once "db/db-web.php";
|
4 |
788fa6d8
|
horkym
|
require_once "location.php";
|
5 |
574d6347
|
horkym
|
|
6 |
|
|
class DAO {
|
7 |
|
|
|
8 |
|
|
protected $dbh;
|
9 |
788fa6d8
|
horkym
|
|
10 |
574d6347
|
horkym
|
public function setDB($dbh) {
|
11 |
|
|
$this->dbh = $dbh;
|
12 |
|
|
}
|
13 |
|
|
|
14 |
788fa6d8
|
horkym
|
public function insertVehicles() {
|
15 |
41dd5f26
|
horkym
|
$query = "SELECT COUNT(*) AS total FROM vozidlo";
|
16 |
788fa6d8
|
horkym
|
$stmt = $this->dbh->executeQuery($query);
|
17 |
|
|
|
18 |
|
|
if ($stmt->fetchAssoc()["total"] < 1) {
|
19 |
41dd5f26
|
horkym
|
// Pokud v tabulce s vozidly neni zadny zaznam, pridat vsechny moznosti.
|
20 |
|
|
$query = "INSERT INTO vozidlo (id, nazev) VALUES ";
|
21 |
788fa6d8
|
horkym
|
$query .= "('0', 'Neznámé vozidlo'), ";
|
22 |
|
|
$query .= "('1', 'Motocykl'), ";
|
23 |
|
|
$query .= "('2', 'Auto'), ";
|
24 |
|
|
$query .= "('3', 'Auto s přívěsem'), ";
|
25 |
|
|
$query .= "('4', 'Dodávka'), ";
|
26 |
|
|
$query .= "('5', 'Dodávka s přívěsem'), ";
|
27 |
|
|
$query .= "('6', 'Lehký nákladní automobil'), ";
|
28 |
|
|
$query .= "('7', 'Lehký nákladní automobil s přívěsem'), ";
|
29 |
|
|
$query .= "('8', 'Nákladní automobil'), ";
|
30 |
|
|
$query .= "('9', 'Nákladní automobil s přívěsem'), ";
|
31 |
|
|
$query .= "('10', 'Autobus');";
|
32 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
33 |
|
|
}
|
34 |
|
|
}
|
35 |
|
|
|
36 |
|
|
public function controlTrafficData($dateStr) {
|
37 |
|
|
$dateTo = new DateTime($dateStr);
|
38 |
|
|
$dateTo->modify("+1 day");
|
39 |
41dd5f26
|
horkym
|
$query = "SELECT COUNT(*) AS total FROM datum WHERE od >= '$dateStr' AND od < '".$dateTo->format('Y-m-d')."';";
|
40 |
788fa6d8
|
horkym
|
$stmt = $this->dbh->executeQuery($query);
|
41 |
|
|
return $stmt->fetchAssoc()["total"] < 1;
|
42 |
|
|
}
|
43 |
|
|
|
44 |
41dd5f26
|
horkym
|
public function insertTrafficData($insertDate, $insertRTT, $insertRT, $insertOneDay) {
|
45 |
|
|
for ($i = 0; $i < 4; $i++) {
|
46 |
788fa6d8
|
horkym
|
$query = "";
|
47 |
|
|
$values = "";
|
48 |
|
|
$counter = 0;
|
49 |
|
|
$array = NULL;
|
50 |
|
|
|
51 |
|
|
if ($i == 0) {
|
52 |
41dd5f26
|
horkym
|
$query = "INSERT INTO datum VALUES ";
|
53 |
|
|
$array = &$insertDate;
|
54 |
|
|
} else if ($i == 1) {
|
55 |
788fa6d8
|
horkym
|
$query = "INSERT INTO zaznam_cas VALUES ";
|
56 |
|
|
$array = &$insertRTT;
|
57 |
41dd5f26
|
horkym
|
} else if ($i == 2) {
|
58 |
788fa6d8
|
horkym
|
$query = "INSERT INTO zaznam VALUES ";
|
59 |
|
|
$array = &$insertRT;
|
60 |
e1140d8a
|
horkym
|
} else {
|
61 |
|
|
$query = "INSERT INTO zaznam_prum_den VALUES ";
|
62 |
|
|
$array = &$insertOneDay;
|
63 |
788fa6d8
|
horkym
|
}
|
64 |
|
|
|
65 |
|
|
for ($j = 0; $j < count($array); $j++) {
|
66 |
|
|
$values .= $array[$j].", ";
|
67 |
|
|
$counter++;
|
68 |
41dd5f26
|
horkym
|
if ($counter == 1000 || $j == (count($array) - 1)) {
|
69 |
788fa6d8
|
horkym
|
$query_ = $query.substr($values, 0, strlen($values) - 2).";";
|
70 |
|
|
$stmt = $this->dbh->executeQuery($query_);
|
71 |
|
|
|
72 |
|
|
$values = "";
|
73 |
|
|
$counter = 0;
|
74 |
|
|
}
|
75 |
|
|
}
|
76 |
|
|
}
|
77 |
|
|
}
|
78 |
|
|
|
79 |
|
|
public function insertLocationData($location) {
|
80 |
|
|
|
81 |
|
|
// --- Kontrola, zda je mesto v tabulce, pripadne jeho pridani. ---
|
82 |
|
|
|
83 |
|
|
$townId = $this->conditionalInsertion($location, "mesto", -1);
|
84 |
|
|
|
85 |
|
|
// --- Kontrola, zda je ulice v tabulce, pripadne jeji pridani. ---
|
86 |
|
|
|
87 |
|
|
$streetId = $this->conditionalInsertion($location, "ulice", $townId);
|
88 |
|
|
|
89 |
|
|
// --- Kontrola, zda je zarizeni v tabulce, pripadne jeho pridani. ---
|
90 |
|
|
|
91 |
|
|
$query = "SELECT * FROM zarizeni WHERE id='".$location->device."';";
|
92 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
93 |
|
|
|
94 |
|
|
if (!($stmt->fetchAssoc())) {
|
95 |
|
|
// Zarizeni se v tabulce jeste nenachazi.
|
96 |
|
|
$query = "INSERT INTO zarizeni VALUES ('".$location->device."', '".$location->name."', '0', '$streetId');";
|
97 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
98 |
|
|
}
|
99 |
|
|
|
100 |
|
|
}
|
101 |
|
|
|
102 |
|
|
// Pro mesta a ulice.
|
103 |
|
|
private function conditionalInsertion($location, $table, $townId) {
|
104 |
|
|
$query = "SELECT id FROM $table WHERE nazev=";
|
105 |
|
|
if ($townId < 0) {
|
106 |
|
|
// Hledame mesto.
|
107 |
|
|
$query .= "'".$location->town."';";
|
108 |
|
|
} else {
|
109 |
|
|
// Hledame ulici (s odkazem na konkretni mesto - ruzna mesta mohou mit shodny nazev nejake ulice).
|
110 |
|
|
$query .= "'".$location->street."' AND mesto_id='$townId';";
|
111 |
|
|
}
|
112 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
113 |
|
|
|
114 |
|
|
$id = -1;
|
115 |
|
|
if ($row = $stmt->fetchAssoc()) {
|
116 |
|
|
// Zaznam uz je v tabulce.
|
117 |
|
|
$id = $row["id"];
|
118 |
|
|
} else {
|
119 |
|
|
// Zaznam se v tabulce jeste nenachazi - nalezeni id pro novy zaznam.
|
120 |
|
|
$id = $this->findFirstId($table);
|
121 |
|
|
|
122 |
|
|
$query = "INSERT INTO $table VALUES ";
|
123 |
|
|
if ($townId < 0) {
|
124 |
|
|
$query .= "('$id', '".$location->town."');";
|
125 |
|
|
} else {
|
126 |
3380c12b
|
horkym
|
// Jestlize ulice v DB jeste neexistuje, nastavit geolokaci (nema smysl zem. sirku a delku zjistovat driv - nejedna se o dulezite informace pro CRON).
|
127 |
|
|
$location->setGeolocation();
|
128 |
|
|
$query .= "('$id', '".$location->street."', '$townId', '".$location->lat."', '".$location->lng."');";
|
129 |
788fa6d8
|
horkym
|
}
|
130 |
|
|
|
131 |
|
|
// Vlozeni zaznamu do tabulky.
|
132 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
133 |
|
|
}
|
134 |
|
|
|
135 |
|
|
return $id;
|
136 |
|
|
}
|
137 |
|
|
|
138 |
|
|
public function findFirstId($table) {
|
139 |
|
|
$query = "SELECT id FROM $table ORDER BY id DESC LIMIT 1;";
|
140 |
|
|
$stmt = $this->dbh->executeQuery($query);
|
141 |
|
|
|
142 |
|
|
$id = -1;
|
143 |
|
|
if ($row = $stmt->fetchAssoc()) {
|
144 |
|
|
// V tabulce je vice zaznamu.
|
145 |
|
|
$id = $row["id"] + 1;
|
146 |
|
|
} else {
|
147 |
|
|
// Tabulka je prazdna.
|
148 |
|
|
$id = 1;
|
149 |
|
|
}
|
150 |
|
|
|
151 |
|
|
return $id;
|
152 |
|
|
}
|
153 |
|
|
|
154 |
574d6347
|
horkym
|
}
|
155 |
|
|
|
156 |
|
|
?>
|