2
0

tanss.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <?php
  2. require 'vendor/autoload.php';
  3. use GuzzleHttp\Client;
  4. use GuzzleHttp\Psr7;
  5. use GuzzleHttp\Exception\ClientException;
  6. setlocale(LC_ALL, 'de_DE', 'de_DE.UTF-8');
  7. class tanss
  8. {
  9. private $tanssurl = "https://tanss.vision4it.de/";
  10. private $token4devices = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJERVZJQ0VfTUFOQUdFTUVOVCIsImV4cCI6MTY3MjIxOTg2NSwidHlwZSI6IkRFVklDRV9NQU5BR0VNRU5UIn0.Z5_Lly9jBIBqO59cLL8TXOjULrKUtbf7OVamX0M7Y3_goduPO6sNmzKwmMHaEW9kiAMUSJn_J2XeJ_JVP_DkxuCLAwsKbDVXkyTK_txKXVgkyZ18niQIa4gAALn9QBKe6Cio2nN5Q6Wwo30lnZcg4AyuJ1cg_gJNFisxdWILF8w";
  11. //private $token4tanssx = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJUQU5TU19BUFAiLCJleHAiOjE2NzIyMTkyNzYsInR5cGUiOiJUQU5TU19BUFAifQ.REWqktC1irfeIY3QZL8YKelmqvHepmtpkJqm3O_gmSj0bVJWpPw1xF3mV1ICwLoLYm_oy7S6CB-Cxe6gHRHCCBVbr1uFbhpo5sk7cjuqFrfCOS6A5gc6a29vNLihnWXaGD3LwzsVgA7xqfUQVBxdofUbkfxOwAJUOjpzztG_Pus";
  12. private $token4monitor = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJNT05JVE9SSU5HIiwiZXhwIjoxNjc2NTQ4NzQ4LCJ0eXBlIjoiTU9OSVRPUklORyJ9.G1a85W2Gpgm72epAxioyjY4i-3bfxwMkyxGvSwcjAzjb8_bwArMPSdaTV7dJrO1MAJBhgXfhU-MICtcBFi8FMrOrd9t2WJGIgsLKPI2Bg7OYkEatS4b2mQGTggtA27b2FvoPIviPv6snL8CIPkO5-iOGBaDhIi0SW2BlY7goLss";
  13. private $token4phone = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJQSE9ORSIsImV4cCI6MTY5MjM2NjU2NCwidHlwZSI6IlBIT05FIn0.ON4AnJi0uVUa7eFizkaEfITos1m4JyslZ2-TqTD7tN4aAw21-megGv7xwMIZxQOvHUVDSVoLuWbBQ1QW1iWxOgMdgds0d6vC99Z4iQ2ulLE7SQckmDzgA2Qx4f6BQ2_PqdcmdZa0pQ0JxcHb_xlaZptu7gtcMP52Bu9XRRrUUHg";
  14. //private $token4remoteSupports = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJSRU1PVEVfU1VQUE9SVCIsImV4cCI6MTY5Mjk2NTUyNCwidHlwZSI6IlJFTU9URV9TVVBQT1JUIiwiaW5mbyI6IjEwMDEifQ.nE19B7tJCnnUhIyHgE5NxyFHBj-RpSLWJ5bnM65KNMlfzHt47DfLFISSN7YuUHr3onYCIrwVAs9KyjBj03i4vRGmR8XmxizUbGtjmJkbRurO5XCBByYvJn0e1wxQKx_-YnAbPNtiyosiyH9TWktgHyVA4UVDUTnHRsmxD7k3nyU";
  15. private $token4remoteSupports = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJSRU1PVEVfU1VQUE9SVCIsImV4cCI6MTY5NzI5NDAxNiwidHlwZSI6IlJFTU9URV9TVVBQT1JUIiwiaW5mbyI6IjEwMDIifQ.nrZJR0_X2JY0-42EAfv9Fib4ZelGV0wh1iviKFjBxooGwNc5hbUGf4-5_IYYNaTh8Y5inOaxQMlFz3mj2QPiP85nsOeAC30F5_qW442IqnemntQrssd-WbCHxL2-ocl61iMWXMBPIja2BISu61-oXSWVT1WvMHyS0IFv_CFt718";
  16. private $headers4tickets = "";
  17. private $headers4devices = "";
  18. private $userheader = "";
  19. public $logintoken = "";
  20. public $loggedin = false;
  21. public $username = "";
  22. public $password = "";
  23. public $employeeId = 0;
  24. public $expire = 0;
  25. protected $cookieFileLocation = './cookie.txt';
  26. private $client = "";
  27. private $db = null;
  28. public $dbhost = "10.7.50.52";
  29. public $dbuser = "tanss_ro";
  30. public $dbpass = "-QqZg)nTJa2)#";
  31. function __construct()
  32. {
  33. $this->headers4tickets = ["apiToken: ". $this->token4monitor , "Content-Type: application/json"];
  34. $this->headers4devices = ["apiToken: ". $this->token4devices , "Content-Type: application/json"];
  35. $this->cookieFileLocation = dirname(__FILE__).'/cookie.txt';
  36. $this->client = new \GuzzleHttp\Client([ 'base_uri' => $this->tanssurl, 'debug' => false, 'verify' => false , "Content-Type" => "application/json;charset=ISO-8859-1"]);
  37. }
  38. public function login($username,$password,$refreshToken="")
  39. {
  40. if ($refreshToken=="") {
  41. $headers=["user"=> $username , "password" => $password ];
  42. } else {
  43. $headers=["user" => $username , "password" => $password, "logintoken" => $refreshToken];
  44. }
  45. $response = $this->client->request( 'GET', '/backend/api/v1/user/login', ['headers' => $headers] );
  46. // Ergebnisse ermitteln
  47. $statuscode = $response->getStatusCode();
  48. $header = $response->getHeaders();
  49. $body = json_decode($response->getBody()->getContents());
  50. // Ergebnis Object bauen
  51. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body];
  52. if ($ergobj->statuscode == 200 && $ergobj->body->meta->text <> "Unsuccesful login attempt") {
  53. $this->logintoken = $ergobj->body->content->apiKey;
  54. $this->userHeader = ["apiToken" => $ergobj->body->content->apiKey];
  55. $this->username = $username;
  56. $this->password = $password;
  57. $this->employeeId = $ergobj->body->content->employeeId;
  58. $this->expire = $ergobj->body->content->expire;
  59. $retvalue = 200;
  60. } else {
  61. $this->logintoken = "";
  62. $this->username = "";
  63. $this->password = "";
  64. $this->userHeader = "";
  65. $this->employeeId = 0;
  66. $this->expire = 0;
  67. $retvalue = 403;
  68. }
  69. return $retvalue;
  70. }
  71. public function readsession(&$session)
  72. {
  73. $this->loggedin = $session['loggedin'];
  74. $this->logintoken = $session['id'];
  75. $this->userHeader = $session["userHeader"];
  76. $this->username = $session["username"];
  77. $this->password = $session["password"];
  78. $this->employeeId = $session["employeeId"];
  79. $this->expire = $session["expire"];
  80. }
  81. public function writesession(&$session)
  82. {
  83. $session['loggedin'] = $this->loggedin;
  84. $session['id'] = $this->logintoken;
  85. $session["userHeader"] = $this->userHeader;
  86. $session["name"] = $this->username;
  87. $session["password"] = $this->password;
  88. $session["employeeId"] = $this->employeeId;
  89. $session["expire"] = $this->expire;
  90. }
  91. public function ticketlist()
  92. {
  93. try {
  94. $response = $this->client->request( 'GET', '/backend/api/v1/tickets/own', ['headers' => $this->userHeader] );
  95. $statuscode = $response->getStatusCode();
  96. $header = $response->getHeaders();
  97. $body = json_decode($response->getBody()->getContents());
  98. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body];
  99. if ($ergobj->statuscode == 200) {
  100. $retvalue = $ergobj;
  101. } else {
  102. $retvalue = (object)[];
  103. }
  104. }
  105. catch (Exception $e) {
  106. $retvalue = (object)[];
  107. echo "<pre>Fehler: ";
  108. echo Psr7\Message::toString($e->getRequest());
  109. echo Psr7\Message::toString($e->getResponse());
  110. echo "</pre>";
  111. }
  112. return $retvalue;
  113. }
  114. public function ticketlistAll()
  115. {
  116. try {
  117. $response = $this->client->request( 'GET', '/backend/api/v1/tickets/technician', ['headers' => $this->userHeader] );
  118. $statuscode = $response->getStatusCode();
  119. $header = $response->getHeaders();
  120. $body = json_decode($response->getBody()->getContents());
  121. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body];
  122. if ($ergobj->statuscode == 200) {
  123. $retvalue = $ergobj;
  124. } else {
  125. $retvalue = (object)[];
  126. }
  127. }
  128. catch (Exception $e) {
  129. $retvalue = (object)[];
  130. echo "<pre>Fehler: ";
  131. echo Psr7\Message::toString($e->getRequest());
  132. echo Psr7\Message::toString($e->getResponse());
  133. echo "</pre>";
  134. }
  135. return $retvalue;
  136. }
  137. public function timestamp()
  138. {
  139. try {
  140. $response = $this->client->request( 'GET', '/backend/api/v1/timestamps', ['headers' => $this->userHeader] );
  141. $statuscode = $response->getStatusCode();
  142. $header = $response->getHeaders();
  143. $body = json_decode($response->getBody()->getContents());
  144. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body];
  145. if ($ergobj->statuscode == 200) {
  146. $retvalue = $ergobj;
  147. } else {
  148. $retvalue = (object)[];
  149. }
  150. }
  151. catch (Exception $e) {
  152. $retvalue = (object)[];
  153. echo "<pre>Fehler: ";
  154. echo Psr7\Message::toString($e->getRequest());
  155. echo Psr7\Message::toString($e->getResponse());
  156. echo "</pre>";
  157. }
  158. return $retvalue;
  159. }
  160. public function settimestamp($state)
  161. {
  162. $body = [
  163. "employeeId" => $this->employeeId,
  164. "state" => strtoupper($state),
  165. "type" => "WORK",
  166. "date" => time(),
  167. "autoPause" => true
  168. ];
  169. var_dump($body);
  170. try {
  171. $response = $this->client->request( 'POST', '/backend/api/v1/timestamps', ['headers' => $this->userHeader, 'json' => $body, "query" => "autoPause=true" ] );
  172. $statuscode = $response->getStatusCode();
  173. $header = $response->getHeaders();
  174. $body = json_decode($response->getBody()->getContents());
  175. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body];
  176. if ($ergobj->statuscode == 201) {
  177. $retvalue = $ergobj;
  178. } else {
  179. $retvalue = (object)[];
  180. }
  181. }
  182. catch (Exception $e)
  183. {
  184. $retvalue = (object)[];
  185. echo "<pre>Fehler: ";
  186. echo Psr7\Message::toString($e->getRequest());
  187. echo Psr7\Message::toString($e->getResponse());
  188. echo "</pre>";
  189. }
  190. return $retvalue;
  191. }
  192. public function getCalls($employeeId = 0)
  193. {
  194. $body = [
  195. "timeframe" => [
  196. "from" => (time() - (12 * 60 * 60)) ,
  197. "to" => time()
  198. ],
  199. "numberFilters" => [],
  200. "showTrysAsWell" => true,
  201. "employeeId" => $employeeId ,
  202. "numberInfos" => true
  203. ];
  204. try {
  205. $response = $this->client->request(
  206. 'put',
  207. '/backend/api/calls/v1',
  208. ['headers' => [
  209. "apiToken" => $this->token4phone,
  210. "Content-Type" => "application/json"
  211. ],
  212. 'json' => $body ]
  213. );
  214. $statuscode = $response->getStatusCode();
  215. $header = $response->getHeaders();
  216. $body = json_decode($response->getBody()->getContents());
  217. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body ];
  218. if ($ergobj->statuscode == 200) {
  219. $retvalue = $ergobj;
  220. } else {
  221. $retvalue = (object)[];
  222. }
  223. }
  224. catch (Exception $e) {
  225. $retvalue = (object)[];
  226. echo "<pre>Fehler: ";
  227. echo Psr7\Message::toString($e->getRequest());
  228. echo Psr7\Message::toString($e->getResponse());
  229. echo "</pre>";
  230. }
  231. return $retvalue;
  232. }
  233. public function getChats($employeeId = 0)
  234. {
  235. $body = [
  236. "employeeId" => $employeeId ,
  237. "onlyExpectedTimeExpired" => false,
  238. "status" => "OPEN",
  239. "loadMessages" => "NONE",
  240. "showOnlyParticapatedChat" => true,
  241. "loadMessages" => "NONE"
  242. ];
  243. try {
  244. $response = $this->client->request(
  245. 'PUT',
  246. '/backend/api/v1/chats',
  247. ['headers' => [ "apiToken" => $this->userHeader ] ,
  248. 'json' => $body ]
  249. );
  250. $statuscode = $response->getStatusCode();
  251. $header = $response->getHeaders();
  252. $body = json_decode($response->getBody()->getContents());
  253. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body ];
  254. if ($ergobj->statuscode == 200) {
  255. $retvalue = $ergobj;
  256. } else {
  257. $retvalue = (object)[];
  258. }
  259. }
  260. catch (Exception $e) {
  261. $retvalue = (object)[];
  262. echo "<pre>Fehler: ";
  263. echo Psr7\Message::toString($e->getRequest());
  264. echo Psr7\Message::toString($e->getResponse());
  265. echo "</pre>";
  266. }
  267. return $retvalue;
  268. }
  269. public function getTasks_API($employeeId = 0,$companyId = 0,$typeId = 0, $text = "")
  270. {
  271. $from = new DateTime('today midnight');
  272. $to= new DateTime();
  273. $to->add(new DateInterval('P7D'));
  274. $body = ["timeframe" => [ "from" => $from->getTimestamp(), "to" => $to->getTimestamp()] ];
  275. ($employeeId>0) ? $body[] = ["employeeId" => $employeeId] : null;
  276. ($companyId>0) ? $body[] = ["companyId" => $companyId] : null;
  277. ($typeId>0) ? $body[] = ["typeId" => $typeId] : ["typeId" => 3];
  278. ($text>0) ? $body[] = ["text" => $text] : null;
  279. //print_r($body);
  280. try {
  281. $response = $this->client->request(
  282. 'PUT',
  283. '/backend/api/remoteSupports/v1',
  284. ['headers' => [ "apiToken" => $this->token4remoteSupports] ,
  285. 'json' => $body ]
  286. );
  287. $statuscode = $response->getStatusCode();
  288. $header = $response->getHeaders();
  289. $body = json_decode($response->getBody()->getContents());
  290. $ergobj = (object) ["statuscode" => $statuscode, "header" => $header, "body" => $body ];
  291. //var_dump($this->logintoken);
  292. if ($ergobj->statuscode == 200) {
  293. $retvalue = $ergobj;
  294. } else {
  295. $retvalue = (object)[];
  296. }
  297. }
  298. catch (Exception $e) {
  299. $retvalue = (object)[];
  300. echo "<pre>Fehler: ";
  301. echo Psr7\Message::toString($e->getRequest());
  302. echo Psr7\Message::toString($e->getResponse());
  303. echo "</pre>";
  304. }
  305. return $retvalue;
  306. }
  307. public function timeDifference( $date_1, $date_2, $differenceFormat = "%m Monate %d Tage %H Stunden %i Minuten" )
  308. {
  309. $datetime1 = new DateTime();
  310. $datetime1->setTimestamp($date_1);
  311. $datetime2 = new DateTime();
  312. $datetime2->setTimestamp($date_2);
  313. $interval = $datetime1->diff($datetime2);
  314. return $interval->format($differenceFormat);
  315. }
  316. function openMysql() {
  317. $this->db = new PDO("mysql:host=".$this->dbhost.";charset=utf8;dbname=tanss", $this->dbuser, $this->dbpass, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_TIMEOUT => 5, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  318. }
  319. public function getTasks($employeeId = 0) {
  320. $sql_termine = 'SELECT
  321. leistungen.ID,
  322. leistungen.datum as termin_start,
  323. leistungen.dauer*60+leistungen.datum as termin_ende,
  324. leistungen.dauer/60 as termin_dauer,
  325. leistungen.text as info,
  326. mitarbeiter.name as techniker,
  327. firmen.name as kunde,
  328. leistungen.tepID as typ
  329. FROM tanss.leistungen
  330. left outer join mitarbeiter on leistungen.mitarbeiterID = mitarbeiter.ID
  331. left outer join firmen on leistungen.firmenID = firmen.ID
  332. WHERE FROM_UNIXTIME(datum,"%Y-%m-%d") >= date(now())
  333. AND leistungen.tepID in (2,3)
  334. ' . ( ($employeeId>0) ? "AND mitarbeiter.ID = ".$employeeId : "" ). '
  335. ORDER BY datum ASC
  336. ';
  337. // Verbindung öffnen
  338. $this->openMysql();
  339. // SQL ausführen: Termine
  340. $datasql = $this->db->query($sql_termine, PDO::FETCH_ASSOC);
  341. $data_termine = $datasql->fetchAll(PDO::FETCH_OBJ);
  342. //$dbcount_termine = $datasql->rowCount();
  343. // Verbindung schließen
  344. $this->db = null;
  345. return $data_termine;
  346. }
  347. }