db.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. // header('Access-Control-Allow-Origin: *');
  3. header('Access-Control-Allow-Methods: GET, POST, PUT');
  4. header('Access-Control-Allow-Headers: accept, content-type');
  5. header('Cache-Control: no-cache, must-revalidate');
  6. header('Content-type: application/json');
  7. $dbh = new PDO("mysql:host=localhost;dbname=tasks", "root", "gc01mysql");
  8. $dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
  9. $data = json_decode(file_get_contents('php://input'), true);
  10. $result = array();
  11. switch ($_REQUEST['a']) {
  12. case 'fehlerbericht':
  13. $kunde = $_REQUEST['kunde'];
  14. $datum = $_REQUEST['datum'];
  15. $start = ($_REQUEST['start'] == "null") ? '00:00:00' : $_REQUEST['start'];
  16. if (count($data) > 0) {
  17. } else {
  18. $q = $dbh->query("SELECT sm.*, k.whitelist FROM status_meldung sm
  19. INNER JOIN kunden k USING (kunde)
  20. WHERE sm.datum = '{$datum}' AND sm.kunde = '{$kunde}' AND sm.start = '{$start}' LIMIT 1");
  21. $result = $q->fetch(PDO::FETCH_ASSOC);
  22. if ($result) {
  23. $result['fehlerbericht'] = str_replace("\r\`", "`", str_replace("\r\"", "\"", str_replace("\r\n", "", $result['fehlerbericht'])));
  24. $fehlerbericht = json_decode($result['fehlerbericht'], true);
  25. if ($fehlerbericht) {
  26. $result['fehlerbericht'] = $fehlerbericht;
  27. }
  28. $result['whitelist'] = (isset($result['whitelist'])) ? json_decode(stripslashes($result['whitelist']), true) : null;
  29. } else {
  30. $result = array();
  31. }
  32. if (isset($result['kommentar_id']) && $result['kommentar_id'] > 0) {
  33. $q = $dbh->query("SELECT sk.* FROM status_kommentar sk
  34. WHERE sk.id = '{$result['kommentar_id']}' ");
  35. $comment = $q->fetch(PDO::FETCH_ASSOC);
  36. } else {
  37. $q = $dbh->query("SELECT sk.* FROM status_kommentar sk
  38. WHERE sk.datum = '{$datum}' AND sk.kunde = '{$kunde}' AND sk.start = '{$start}'
  39. ORDER BY cdate DESC LIMIT 1");
  40. $comment = $q->fetch(PDO::FETCH_ASSOC);
  41. }
  42. $result['kommentar'] = ($comment) ? $comment : array();
  43. }
  44. break;
  45. case 'zeit':
  46. $q = $dbh->exec("UPDATE kunden SET start_soll = '{$_REQUEST['start_soll']}', ende_soll = '{$_REQUEST['ende_soll']}' WHERE kunde = '{$_REQUEST['kunde']}' ");
  47. $error = $dbh->errorInfo();
  48. if ($error[0] != '00000') {
  49. $result = $error;
  50. } else {
  51. $result = $_REQUEST;
  52. }
  53. break;
  54. case 'whitelist':
  55. $q = $dbh->query("SELECT * FROM kunden WHERE kunde = '{$_REQUEST['kunde']}' ");
  56. $result = $q->fetch(PDO::FETCH_ASSOC);
  57. $whitelist = json_decode(stripslashes($result['whitelist']), true);
  58. if (!is_array($whitelist)) {
  59. $whitelist = array();
  60. }
  61. if ($_REQUEST['aktiv'] == "J") {
  62. if (!isset($whitelist[$_REQUEST['typ']])) {
  63. $whitelist[$_REQUEST['typ']] = array($_REQUEST['wert']);
  64. } else if (in_array($_REQUEST['wert'], $whitelist[$_REQUEST['typ']])) {
  65. $result = array('whitelist' => $whitelist);
  66. break;
  67. } else {
  68. $whitelist[$_REQUEST['typ']][] = $_REQUEST['wert'];
  69. }
  70. } else {
  71. if (!isset($whitelist[$_REQUEST['typ']]) || !in_array($_REQUEST['wert'], $whitelist[$_REQUEST['typ']])) break;
  72. $whitelist[$_REQUEST['typ']] = array_diff($whitelist[$_REQUEST['typ']], array($_REQUEST['wert']));
  73. }
  74. $q = $dbh->exec("UPDATE kunden SET whitelist = '" . addslashes(json_encode($whitelist)) . "' WHERE kunde = '{$_REQUEST['kunde']}' ");
  75. $error = $dbh->errorInfo();
  76. if ($error[0] != '00000') {
  77. $result = $error;
  78. } else {
  79. $result = array('whitelist' => $whitelist);
  80. }
  81. break;
  82. case 'changelog':
  83. $kunde = "Jansen";
  84. $q = $dbh->query("SELECT * FROM kunden_gcstarter WHERE kunde = '{$kunde}' ORDER BY datum DESC LIMIT 1");
  85. $result = $q->fetch(PDO::FETCH_ASSOC);
  86. $r = json_decode(utf8_decode($result['gcstarter']), true);
  87. //echo json_last_error();
  88. $byDate = (isset($r['Kontenzuordnung GAPS.csv.log'])) ? $r['Kontenzuordnung GAPS.csv.log'] : array();
  89. $states = array("neu", "akt", "entf");
  90. $list = array();
  91. foreach($byDate as $entry) {
  92. foreach ($states as $state) {
  93. foreach($entry[$state] as $account) {
  94. $account['Datum'] = $entry['datum'];
  95. $account['Status'] = $state;
  96. $list[] = $account;
  97. }
  98. }
  99. }
  100. $q = $dbh->query("SELECT * FROM kunden_gcstruct WHERE kunde = '{$kunde}' ORDER BY datum DESC LIMIT 1");
  101. $result = $q->fetch(PDO::FETCH_ASSOC);
  102. $struct = json_decode($result['gcstruct'], true);
  103. $result = array('Historie' => $byDate, 'Liste' => $list, 'GCStruct' => $struct);
  104. break;
  105. case 'kunden':
  106. if (count($data) > 0) {
  107. foreach ($data as $kunde) {
  108. if (isset($kunde['kunde'])) {
  109. $q = $dbh->exec("UPDATE kunden SET system = '{$kunde['system']}', start_soll = '{$kunde['start_soll']}', ende_soll = '{$kunde['ende_soll']}',
  110. erster_status = '{$kunde['erster_status']}', aktiv = '{$kunde['aktiv']}', woche = '{$kunde['woche']}',
  111. bundesland = '{$kunde['bundesland']}', plz = '{$kunde['plz']}', ort = '{$kunde['ort']}' WHERE kunde = '{$kunde['kunde']}' ");
  112. }
  113. }
  114. }
  115. $q = $dbh->query("SELECT * FROM kunden");
  116. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  117. foreach ($result as $i => $r) {
  118. $result[$i]['whitelist'] = json_decode(stripslashes($r['whitelist']), true);
  119. $result[$i]['ort'] = utf8_decode($r['ort']);
  120. }
  121. break;
  122. case 'tickets':
  123. if (count($data) > 0) {
  124. if ($data['id'] == '') {
  125. $q = $dbh->exec("INSERT INTO tickets (datum, benutzer, kunde, kontakt, beschreibung, termin, dauer, status, prioritaet, fortschritt, kategorie, programm, kommentar)
  126. VALUES ('{$data['datum']}', '{$data['benutzer']}', '{$data['kunde']}', '{$data['kontakt']}', '{$data['beschreibung']}', '{$data['termin']}', '{$data['dauer']}',
  127. '{$data['status']}', '{$data['prioritaet']}', '{$data['fortschritt']}', '{$data['kategorie']}', '{$data['programm']}', '{$data['kommentar']}')");
  128. } else {
  129. $q = $dbh->exec("UPDATE tickets SET datum = '{$data['datum']}', benutzer = '{$data['benutzer']}', kunde = '{$data['kunde']}', kontakt = '{$data['kontakt']}',
  130. beschreibung = '{$data['beschreibung']}', termin = '{$data['termin']}', dauer = '{$data['dauer']}', status = '{$data['status']}',
  131. prioritaet = '{$data['prioritaet']}', fortschritt = '{$data['fortschritt']}', kategorie = '{$data['kategorie']}', programm = '{$data['programm']}',
  132. kommentar = '{$data['kommentar']}'
  133. WHERE id = '{$data['id']}' ");
  134. }
  135. }
  136. $q = $dbh->query("SELECT * FROM tickets");
  137. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  138. break;
  139. case 'config':
  140. $q = $dbh->query("SELECT kunde, datum FROM kunden_config ORDER BY 1, 2 DESC");
  141. $result = array('options' => array());
  142. while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
  143. $result['options'][$row['kunde']][] = $row['datum'];
  144. }
  145. if (isset($_REQUEST['kunde']) && $_REQUEST['kunde'] != 'undefined') {
  146. if (preg_match('/\d{4}-\d{2}-\d{2}/', $_REQUEST['datum'])) {
  147. $q = $dbh->query("SELECT * FROM kunden_config WHERE kunde = '{$_REQUEST['kunde']}' AND datum = '{$_REQUEST['datum']}'");
  148. } else {
  149. $q = $dbh->query("SELECT * FROM kunden_config WHERE kunde = '{$_REQUEST['kunde']}' ORDER BY datum DESC LIMIT 1");
  150. }
  151. if ($row = $q->fetch(PDO::FETCH_ASSOC)) {
  152. $row['info'] = json_decode($row['info'], true);
  153. $result['current'] = $row;
  154. }
  155. }
  156. break;
  157. case 'benutzer':
  158. $q = $dbh->query("SELECT * FROM benutzer");
  159. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  160. break;
  161. case 'kommentar':
  162. $id = (isset($_REQUEST['id']) && $_REQUEST['id'] != "undefined") ? $_REQUEST['id'] : '';
  163. if (count($data) > 0) {
  164. if ($id == '') {
  165. $now = date('Y-m-d H:i:s');
  166. $q = $dbh->exec("INSERT INTO status_kommentar (kunde, datum, start, benutzer, fehler, status, kommentar, cdate)
  167. VALUES ('{$data['kunde']}','{$data['datum']}','{$data['start']}','{$data['benutzer']}','{$data['fehler']}','{$data['status']}','{$data['kommentar']}','{$now}')");
  168. $id = $dbh->lastInsertId();
  169. if ($data['status'] == '7' && $data['benutzer2'] != '') {
  170. $q = $dbh->exec("INSERT INTO status_kommentar (kunde, datum, start, benutzer, fehler, status, kommentar, cdate)
  171. VALUES ('{$data['kunde']}','{$data['datum']}','{$data['start']}','{$data['benutzer2']}','{$data['fehler']}','2','','{$now}')");
  172. $id = $dbh->lastInsertId();
  173. }
  174. $q = $dbh->exec("UPDATE status_meldung SET bearbeitet = '1', kommentar_id = '{$id}'
  175. WHERE kunde = '{$data['kunde']}' AND datum = '{$data['datum']}' AND start = '{$data['start']}' ");
  176. } else {
  177. $q = $dbh->exec("UPDATE status_kommentar SET
  178. benutzer = '{$data['benutzer']}',
  179. fehler = '{$data['fehler']}',
  180. status = '{$data['status']}',
  181. kommentar = '{$data['kommentar']}'
  182. WHERE id = '{$id}' ");
  183. }
  184. }
  185. $q = $dbh->query("SELECT * FROM status_kommentar
  186. WHERE datum > date_add(now(), INTERVAL -32 DAY)
  187. ORDER BY datum DESC, mdate DESC");
  188. $result = $q->fetchAll(PDO::FETCH_ASSOC);
  189. break;
  190. default:
  191. case 'liste':
  192. $query = file_get_contents(dirname(__FILE__)."/../queries/status_tag.sql");
  193. if (isset($_REQUEST['datum']) && $_REQUEST['datum'] != '' && $_REQUEST['datum'] != 'today') {
  194. $query = str_replace("now()", "'" . $_REQUEST['datum'] . " 23:59:59'", $query);
  195. }
  196. //echo $query;
  197. $q = $dbh->query($query);
  198. while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
  199. $ka = $row['kunde'] . "-" . $row['aufgabe'];
  200. if (!isset($result[$ka])) {
  201. $result[$ka][0]['status'] = 'egal';
  202. }
  203. $result[$ka][$row['datum_diff']] = $row;
  204. }
  205. }
  206. $json = json_encode($result);
  207. $hash = sha1($json);
  208. echo '{"result":'.$json.',"hash":"'.$hash.'"}';
  209. // echo json_last_error();