X-Git-Url: https://git.infodrom.org/?p=infodrom.org%2Fservice.infodrom.org;a=blobdiff_plain;f=class%2Fspritlog.class.php;h=65df3fded2afdecdeb195ebda55047f8d98185d3;hp=2e501e411f381204e582a21357ff393312e82eae;hb=9e47a5c3e0f1987d7143ff978c21db05c278c5cf;hpb=5c29b7a54a21146782f26da31040132e420c2be0
diff --git a/class/spritlog.class.php b/class/spritlog.class.php
index 2e501e4..65df3fd 100644
--- a/class/spritlog.class.php
+++ b/class/spritlog.class.php
@@ -9,7 +9,7 @@ class SpritLog extends DatabaseTable {
public function distinctYears()
{
- $sql = "SELECT DISTINCT EXTRACT(YEAR from date) AS year FROM sprit_log ORDER BY year DESC";
+ $sql = "SELECT EXTRACT(YEAR from date) AS year,sum(price) AS sum,sum(km) AS km FROM sprit_log GROUP BY year ORDER BY year DESC";
return $this->db->fetchObjectList($sql);
}
@@ -22,11 +22,11 @@ class SpritLog extends DatabaseTable {
$total_liter = 0;
$total_price = 0;
foreach ($this->db->fetchObjectList($sql) as $row) {
- $out .= sprintf('
%s | %s | %s | ' .
+ $out .= sprintf('
%s | %s | %s | ' .
'%.2f | %.2f | %.2f | ' .
'%d | %d |
',
$row->id, assert_german_date($row->date),
- $row->city, $row->tankstelle,
+ $row->city, $row->id, $row->tankstelle,
$row->price_liter, $row->liter,$row->price,
$row->km, $row->km_total);
$total_km += $row->km;
@@ -35,12 +35,12 @@ class SpritLog extends DatabaseTable {
}
if (strlen($out)) {
- $out = '' .
+ $out = '' .
'' .
'Datum | Ort | Tankstelle | ' .
'EUR/l | l | EUR | km | gesamt | ' .
'
' .
- $out .
+ '' . $out . '' .
'' .
'Summe | ' .
sprintf('%.2f | %.2f | %d | | ',
@@ -48,8 +48,73 @@ class SpritLog extends DatabaseTable {
'
' .
'
';
}
- return $out;
+ return array($out, $total_liter, $total_price, $total_km);
}
-}
+ public function ajaxList(Array $data)
+ {
+ list($table, $liter, $price, $km) = $this->formatYear($data['year']);
+
+ return array('html' => array('list_'.$data['year'] => $table,
+ 'sum_'.$data['year'] => sprintf('€ %.2f %d km', $price, $km),
+ ));
+ }
+
+ public function ajaxAdd(Array $data)
+ {
+ $data = array('machine' => intval($data['machine']),
+ 'date' => assert_iso_date($data['date']),
+ 'city' => $data['city'],
+ 'tankstelle' => $data['tankstelle'],
+ 'price_liter' => str_replace(',','.',$data['price_liter']),
+ 'liter' => str_replace(',','.',$data['liter']),
+ 'price' => str_replace(',','.',$data['price']),
+ 'km' => intval($data['km']),
+ 'km_total' => intval($data['km_total']),
+ 'sys_edit' => 'now()',
+ 'sys_user' => $_SERVER['REMOTE_USER']);
+
+ foreach ($data as $k => $v)
+ if (empty($v))
+ return ajax_error(sprintf('Field %s must not be empty', $k));
+
+ if (empty($data['id'])) {
+ $ok = $this->db->insertInto('sprit_log', $data);
+ } else {
+ $ok = $this->db->update('sprit_log', $data, 'id = ' . intval($data['id']));
+ }
+
+ $d = explode('-', $data['date']);
+ return array('status' => $ok, 'year' => $d[0]);
+ }
+ public function ajaxSuggestCity(Array $data)
+ {
+ $data['query'] .= '%';
+ $sql = sprintf("SELECT DISTINCT city FROM sprit_log WHERE lower(city) LIKE %s ORDER BY city",
+ $this->quote(strtolower($data['query'])));
+ $list = array();
+ foreach ($this->fetchObjectList($sql) as $row)
+ $list[] = array('value' => $row->city, 'data' => $row->city);
+ return array('suggestions' => $list);
+ }
+
+ public function ajaxSuggestTankstelle(Array $data)
+ {
+ $data['query'] .= '%';
+ $sql = sprintf("SELECT DISTINCT tankstelle FROM sprit_log WHERE city = %s AND lower(tankstelle) LIKE %s ORDER BY tankstelle",
+ $this->quote($data['city']),
+ $this->quote(strtolower($data['query'])));
+ $list = array();
+ foreach ($this->fetchObjectList($sql) as $row)
+ $list[] = array('value' => $row->tankstelle, 'data' => $row->tankstelle);
+ return array('suggestions' => $list);
+ }
+
+ public function ajaxEditTankstelle(Array $data)
+ {
+ if (!strlen($data['content'])) return false;
+ return $this->modify('tankstelle', $data['content']);
+ }
+
+}