Subversion-Projekte lars-tiefland.ci

Revision

Revision 2333 | Revision 2348 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
2243 lars 1
<?php
2
 
3
/**
4
 *
5
 * @package WebanOS CI
6
 * @author Lars Tiefland <ltiefland@gmail.com>
7
 * @copyright 2016
8
 * @version $Rev: 2334 $
9
 */
10
 
11
class Logistiker_model extends CI_Model
12
{
13
	public function __construct()
14
	{
15
		parent::__construct();
16
	}
17
 
18
	public function get_list($start = 0)
19
	{
2244 lars 20
		$sql = "SELECT
21
				*
22
			FROM
23
				logistiker
24
		";
2247 lars 25
		$res = $this->db->query($sql);
2244 lars 26
		while ($row = $res->unbuffered_row('array')) {
27
			$logistiker[] = $row;
28
		}
29
		return $logistiker;
2243 lars 30
	}
31
 
32
	public function get($id)
33
	{
2244 lars 34
		$sql = "SELECT
35
				*
36
			FROM
37
				logistiker
38
			WHERE
39
				id=" . $id . "
40
		";
2247 lars 41
		$res = $this->db->query($sql);
2244 lars 42
		$logistiker = $res->unbuffered_row('array');
43
		return $logistiker;
2243 lars 44
	}
45
 
2327 lars 46
	public function save($daten)
2243 lars 47
	{
2330 lars 48
		if (!$this->input->post('id'))
2321 lars 49
		{
50
			$sql = "
51
				INSERT INTO
52
					logistiker
53
				SET
54
			";
55
			foreach ($daten as $key => $value)
56
			{
57
				$felder[] = $key."=".$GLOBALS["order_db"]->escape($value);
58
			}
59
			$sql .= implode(",", $felder);
60
			$res = $this->db->query($sql);
61
			$id = $this->db->insert_id();
62
		}
63
		else
64
		{
65
			$sql = "UPDATE
66
					logistiker
67
				SET
68
			";
69
			foreach ($daten as $key => $value)
70
			{
71
				$felder[] = $key."=".$GLOBALS["order_db"]->escape($value);
72
			}
73
			$sql .= implode(",", $felder);
74
			$sql .= "
75
				WHERE
2330 lars 76
					id=".$this->input->post('id')."
2321 lars 77
			";
78
			$res = $this->db->query($sql);
79
		}
80
		if ($res)
81
		{
2333 lars 82
			echo "Daten wurden erfolgreich geändert!";
2321 lars 83
		}
84
		else
85
		{
2333 lars 86
			echo "Leider ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal!";
2321 lars 87
		}
2243 lars 88
	}
2283 lars 89
 
2280 lars 90
	public function export($id)
91
	{
2309 lars 92
		$aColumns = array("exported");
2314 lars 93
		$sIndexColumn = "exported";
2313 lars 94
		$sLimit = $this->input->get('iDisplayStart') . "," . $this->input->get('iDisplayLength');
2317 lars 95
		if (isset($_GET['iSortCol_0'])) {
96
			$sOrder = "ORDER BY  ";
97
			for ($i = 0; $i < intval($this->input->get('iSortingCols')); $i++) {
98
				if ($this->input->get('bSortable_' . intval($this->input->get('iSortCol_' . $i))) ==
99
					"true") {
100
					$sOrder .= $aColumns[intval($this->input->get('iSortCol_' . $i))] . "
101
                                    " . $this->input->get('sSortDir_' . $i) .
102
						", ";
103
				}
104
			}
105
 
106
			$sOrder = substr_replace($sOrder, "", -2);
107
			if ($sOrder == "ORDER BY") {
108
				$sOrder = "";
109
			}
110
		}
2286 lars 111
		$sQuery = "SELECT DISTINCT
112
                    exported
113
                FROM
114
                    artikel_to_Bestellung ab
115
                JOIN
116
                    bestellung_logistiker bl
117
                ON
118
                    bl.logistiker=$id
119
                AND
120
                    bl.bestellung = ab.Bestellung
121
                WHERE
122
                    exported
2283 lars 123
 
2314 lars 124
                " . $sWhere . "
125
                " . $sOrder . "
126
                LIMIT " . $sLimit . "
2286 lars 127
            ";
2310 lars 128
		trigger_error($sQuery);
2288 lars 129
		$rResult = $GLOBALS['order_db']->query($sQuery);
2286 lars 130
 
131
		/* Data set length after filtering */
132
		$sQuery = "
133
                        SELECT FOUND_ROWS() AS total
134
                ";
2288 lars 135
		$rResultFilterTotal = $GLOBALS['order_db']->query($sQuery);
2312 lars 136
		$aResultFilterTotal = $rResultFilterTotal->unbuffered_row('array');
2286 lars 137
		$iFilteredTotal = $aResultFilterTotal["total"];
138
 
139
		/* Total data set length */
140
		$sQuery = "
141
                        SELECT
142
                    COUNT(" . $sIndexColumn . ") AS total
143
                FROM
144
                    artikel_to_Bestellung ab
145
                JOIN
146
                    bestellung_logistiker bl
147
                ON
148
                    bl.logistiker=$id
149
                AND
150
                    bl.bestellung = ab.Bestellung
151
                WHERE
152
                    exported
153
                ";
2288 lars 154
		$rResultTotal = $GLOBALS['order_db']->query($sQuery);
2315 lars 155
		$aResultTotal = $rResultTotal->unbuffered_row('array');
2286 lars 156
		$iTotal = $aResultTotal["total"];
157
 
158
 
159
		/*
160
		* Output
161
		*/
162
		$output = array(
2316 lars 163
			"sEcho" => intval($this->input->get('sEcho')),
2286 lars 164
			"iTotalRecords" => $iTotal,
165
			"iTotalDisplayRecords" => $iTotal,
166
			"aaData" => array());
167
 
168
		$sql = "SELECT
169
                    export_script
170
                FROM
171
                    logistiker
172
                WHERE
173
                    id = " . $id . "
174
            ";
2288 lars 175
		$res = $GLOBALS['order_db']->query($sql);
2286 lars 176
		$nrow = $res->unbuffered_row('array');
177
		if (strstr($nrow["export_script"], "=")) {
178
			$qs = explode(";", $nrow["export_script"]);
179
			foreach ($qs as $val) {
180
				list($key, $wert) = explode("=", $val);
181
				if ($key == "mode") {
182
					$qsArr[] = "mode=" . $wert;
183
				} elseif (is_null($wert)) {
184
					$script = $key;
185
				} elseif (!stristr($key, "status") && $wert) {
186
					$qsArr[] = "$key=" . $wert;
187
				}
188
			}
189
			$qs = implode("&", $qsArr);
190
		} else {
191
			list($script, $mode) = explode(";", $nrow["export_script"]);
192
			$qs = "mode=" . $mode;
193
		}
194
		while ($aRow = $rResult->unbuffered_row('array')) {
195
			$aRow['exported'] = '<a href="/Warenwirtschaft/' . $script . '?time=' . $aRow['exported'] .
196
				'&id=' . $id . '&' . $qs . '" target="_blank">' . date('d.m.Y H:i:s', strtotime
197
				($aRow['exported'])) . '</a>';
198
			$row = array();
199
			for ($i = 0; $i < count($aColumns); $i++) {
200
				if ($aColumns[$i] == "version") {
201
					/* Special output formatting for 'version' column */
202
					$row[] = ($aRow[$aColumns[$i]] == "0") ? '-' : $aRow[$aColumns[$i]];
203
				} else
204
					if ($aColumns[$i] != ' ') {
205
						/* General output */
206
						$row[] = $aRow[$aColumns[$i]];
207
					}
208
			}
209
			$output['aaData'][] = $row;
210
		}
211
 
212
		return json_encode($output);
2280 lars 213
	}
2283 lars 214
 
2280 lars 215
	public function tracking($id)
216
	{
2303 lars 217
		$aColumns = array(
218
			'paketnummer',
219
			'datum',
220
			'bestellung',
221
			);
2305 lars 222
		if (isset($_GET['iSortCol_0'])) {
223
			$sOrder = "ORDER BY  ";
224
			for ($i = 0; $i < intval($this->input->get('iSortingCols')); $i++) {
225
				if ($this->input->get('bSortable_' . intval($this->input->get('iSortCol_' . $i))) ==
226
					"true") {
227
					$sOrder .= $aColumns[intval($this->input->get('iSortCol_' . $i))] . "
2306 lars 228
                                    " . $this->input->get('sSortDir_' . $i) .
229
						", ";
2305 lars 230
				}
231
			}
232
 
233
			$sOrder = substr_replace($sOrder, "", -2);
234
			if ($sOrder == "ORDER BY") {
235
				$sOrder = "";
236
			}
237
		}
2285 lars 238
		$sWhere = "";
2287 lars 239
		if ($this->input->get('sSearch') != "") {
2285 lars 240
			$sWhere = "WHERE (";
241
			for ($i = 0; $i < count($aColumns); $i++) {
242
				if ($aColumns[$i] == "datum") {
243
					$a = " from_unixtime(datum) ";
2288 lars 244
					$sWhere .= $a . " LIKE '%" . $GLOBALS['order_db']->escape($this->input->get('sSearch')) .
2285 lars 245
						"%' OR ";
246
				} else {
2295 lars 247
					$sWhere .= $aColumns[$i] . " LIKE '%" . $GLOBALS['order_db']->escape($this->
248
						input->get('sSearch')) . "%' OR ";
2285 lars 249
				}
250
 
251
			}
252
			$sWhere = substr_replace($sWhere, "", -3);
253
			$sWhere .= ')';
2280 lars 254
		}
2285 lars 255
 
256
		/* Individual column filtering */
257
		for ($i = 0; $i < count($aColumns); $i++) {
2287 lars 258
			if ($this->input->get('bSearchable_' . $i) == "true" && $this->input->get('sSearch_' .
259
				$i) != '') {
2285 lars 260
				if ($sWhere == "") {
261
					$sWhere = "WHERE ";
262
				} else {
263
					$sWhere .= " AND ";
264
				}
265
				if ($aColumns[$i] == "datum") {
266
					$r = " from_unixtime(datum) ";
2288 lars 267
					$sWhere .= $r . " LIKE '%" . $GLOBALS['order_db']->escape($this->input->get('sSearch_' .
2287 lars 268
						$i)) . "%' ";
2285 lars 269
				} else {
2288 lars 270
					$sWhere .= $r . " LIKE '%" . $GLOBALS['order_db']->escape($this->input->get('sSearch_' .
2287 lars 271
						$i)) . "%' ";
2285 lars 272
				}
273
 
274
			}
275
		}
276
 
277
		if (empty($sWhere)) {
278
			$sWhere = " where bp.logistiker=l.id AND l.id = $id ";
279
		} else {
280
			$sWhere = " $sWhere and bp.logistiker=l.id AND l.id = $id ";
281
		}
2297 lars 282
		$sLimit = $this->input->get('iDisplayStart') . "," . $this->input->get('iDisplayLength');
2285 lars 283
		$sQuery = "SELECT
284
                    SQL_CALC_FOUND_ROWS
285
                    bp.*,
286
                    l.kname,
287
                    l.trackinglink
288
                FROM
289
                    logistiker l,
290
                    bestellung_paketnummern bp
2297 lars 291
                    " . $sWhere . "
292
                    " . $sOrder . "
2298 lars 293
					LIMIT " . $sLimit . "
2285 lars 294
                ";
295
		//echo $sQuery;
2288 lars 296
		$rResult = $GLOBALS['order_db']->query($sQuery);
2285 lars 297
 
298
		/* Data set length after filtering */
299
		$sQuery = "
300
                        SELECT FOUND_ROWS() AS total
301
                ";
2288 lars 302
		$rResultFilterTotal = $GLOBALS['order_db']->query($sQuery);
2289 lars 303
		$aResultFilterTotal = $rResultFilterTotal->unbuffered_row('array');
2285 lars 304
		$iFilteredTotal = $aResultFilterTotal["total"];
305
 
306
		/* Total data set length */
307
		$sQuery = "
308
                        SELECT
2292 lars 309
                    COUNT(bp.id) AS total
2285 lars 310
                FROM
311
                    logistiker l,
312
                    bestellung_paketnummern bp
313
                WHERE
314
                    bp.logistiker=l.id
315
                AND
316
                    l.id = $id
317
                ";
318
 
319
 
2288 lars 320
		$rResultTotal = $GLOBALS['order_db']->query($sQuery);
2294 lars 321
		$aResultTotal = $rResultTotal->unbuffered_row('array');
2285 lars 322
		$iTotal = $aResultTotal["total"];
323
 
324
 
325
		/*
326
		* Output
327
		*/
328
		$output = array(
2286 lars 329
			"sEcho" => intval($this->input->get('sEcho')),
2285 lars 330
			"iTotalRecords" => $iTotal,
331
			"iTotalDisplayRecords" => $iFilteredTotal,
332
			"aaData" => array());
333
 
334
		while ($aRow = $rResult->unbuffered_row('array')) {
335
			//$aRow['datum'] = strtotime($aRow['datum']);
336
			$aRow['datum'] = date('d.m.Y', $aRow['datum']);
2308 lars 337
			$aRow['bestellung'] = ' <a target="_blank" href="/backend/order/edit/' . $aRow['bestellung'] .
2307 lars 338
				'">zum Vorgang</a>';
2285 lars 339
 
340
			$url = $aRow["trackinglink"];
341
			if (stristr($url, "%")) {
342
				$tag = date("d", $row_p["datum"]);
343
				$monat = date("m", $row_p["datum"]);
344
				$jahr = date("Y", $row_p["datum"]);
345
				$url = str_replace("%tag%", $tag, $url);
346
				$url = str_replace("%monat%", $monat, $url);
347
				$url = str_replace("%jahr%", $jahr, $url);
348
				$url = str_replace("%trackingnr%", $aRow["paketnummer"], $url);
349
			} else {
350
				$url .= $aRow["paketnummer"];
351
			}
352
 
353
 
354
			$aRow["paketnummer"] = $aRow["kname"] . ': <a href=' . $url . ' target=_blank>' .
355
				$aRow["paketnummer"] . '</a>';
356
			$row = array();
357
			for ($i = 0; $i < count($aColumns); $i++)
358
				if ($aColumns[$i] == "version") {
359
					/* Special output formatting for 'version' column */
360
					$row[] = ($aRow[$aColumns[$i]] == "0") ? '-' : $aRow[$aColumns[$i]];
361
				} else
362
					if ($aColumns[$i] != ' ') {
363
						/* General output */
364
						$row[] = $aRow[$aColumns[$i]];
365
					}
2304 lars 366
			$output['aaData'][] = $row;
2285 lars 367
		}
368
 
369
		return json_encode($output);
2280 lars 370
	}
2285 lars 371
 
2243 lars 372
}
373
 
374
?>