db.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. $dbh = new PDO("mysql:host=localhost;dbname=tasks", "root", "gc01mysql");
  3. $dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
  4. if (isset($_GET['kunde']) && isset($_GET['datum'])) {
  5. $q = $dbh->query("SELECT * FROM statusmail WHERE kunde = '{$_GET['kunde']}' AND datum = '{$_GET['datum']}' LIMIT 1");
  6. $result = $q->fetch(PDO::FETCH_ASSOC);
  7. $result['fehlerbericht'] = str_replace("\\", "\\\\", str_replace("\r\"", "\"", str_replace("\r\n", "", $result['fehlerbericht'])));
  8. $result['fehlerbericht'] = json_decode($result['fehlerbericht'], true);
  9. } else if (isset($_GET['kunden'])) {
  10. $q = $dbh->query("SELECT * FROM kunden");
  11. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  12. } else {
  13. $date = date("Y-m");
  14. $q = $dbh->query("SELECT a.datum, k.kunde, left(k.system, 1) as system, a.bundesland, a.feiertag, k.start_soll, k.ende_soll, s.start, s.ende, s.anzahl, s.bearbeitet, s.benutzer, s.kommentar,
  15. if(s.anzahl is null or s.anzahl > 0, 1, 0) as fehler,
  16. timediff(k.ende_soll, k.start_soll) as dauer,
  17. timediff(s.ende, k.ende_soll) as abweichung,
  18. case
  19. when woche = 'Mo-Fr' then mofr
  20. when woche = 'Mo-Sa' then mosa
  21. when woche = 'Mo-So' then moso
  22. when woche = 'Di-So' then diso
  23. else 1
  24. end * if(anzahl is null and now() > concat(a.datum, ' ', k.ende_soll), 1, 0) as fehlt
  25. FROM arbeitstage a
  26. INNER JOIN kunden k USING (bundesland)
  27. LEFT JOIN statusmail s USING (datum, kunde)
  28. WHERE datum LIKE '{$date}%' AND k.erster_status <= a.datum AND a.datum <= now()
  29. AND k.aktiv = 1
  30. ORDER BY a.datum, k.ende_soll");
  31. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  32. }
  33. header('Access-Control-Allow-Origin: *');
  34. header('Cache-Control: no-cache, must-revalidate');
  35. header('Content-type: application/json');
  36. echo json_encode($result);