<?php
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  error_reporting(E_ALL);

  require_once('./Route.php');
  require_once('./Router.php');

  //Removing /token
  $uri = substr($_SERVER['REQUEST_URI'], 6);
  //Keep everything before '?'
  $uri = substr($uri, 0, strpos($uri, '?'));

  $router = new Router($uri); 

  // Add base route (startpage)
  $router->get('/test',function(){
      echo 'Welcome :-)';
  });
  
  // Post route example
  $router->get('/worklogs/all',function(){
    $authorization = "Authorization: Bearer rVjDIySOMl2NrB86HcsPBe5yKGrKpc";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3/worklogs?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    $results = $jsonArray["results"];
    if ($isNext) {
      $next = $jsonArray["metadata"]["next"];
    }
    while ($isNext) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $next);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $results = array_merge($results, json_decode($result, true)["results"]);
      $isNext = isset(json_decode($result, true)["metadata"]["next"]);
      $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
    }
    header('Content-Type', "application/json");
    echo json_encode($results);
  });

  $router->get('/accounts',function(){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3/accounts?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    $results = $jsonArray["results"];
    if ($isNext) {
      $next = $jsonArray["metadata"]["next"];
    }
    while ($isNext) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $next);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $results = array_merge($results, json_decode($result, true)["results"]);
      $isNext = isset(json_decode($result, true)["metadata"]["next"]);
      $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
    }
    header('Content-Type', "application/json");
    echo json_encode($results);
  });
  
    $router->get('/issue',function(){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3/issue?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    $results = $jsonArray["results"];
    if ($isNext) {
      $next = $jsonArray["metadata"]["next"];
    }
    while ($isNext) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $next);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $results = array_merge($results, json_decode($result, true)["results"]);
      $isNext = isset(json_decode($result, true)["metadata"]["next"]);
      $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
    }
    header('Content-Type', "application/json");
    echo json_encode($results);
  });
  
  
    $router->get('/work-attributes',function(){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3//work-attributes?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    $results = $jsonArray["results"];
    if ($isNext) {
      $next = $jsonArray["metadata"]["next"];
    }
    while ($isNext) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $next);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $results = array_merge($results, json_decode($result, true)["results"]);
      $isNext = isset(json_decode($result, true)["metadata"]["next"]);
      $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
    }
    header('Content-Type', "application/json");
    echo json_encode($results);
  });
  
   $router->get('/worklogs/account/:key',function($key){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3//worklogs/account/$key?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    $results = $jsonArray["results"];
    if ($isNext) {
      $next = $jsonArray["metadata"]["next"];
    }
    while ($isNext) {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $next);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $result = curl_exec($ch);
      curl_close($ch);
      $results = array_merge($results, json_decode($result, true)["results"]);
      $isNext = isset(json_decode($result, true)["metadata"]["next"]);
      $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
    }
    header('Content-Type', "application/json");
    echo json_encode($results);
  });



  // Accept only numbers as parameter. Other characters will result in a 404 error
  $router->get('/worklogs/user/:id',function($id){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3/worklogs/user/$id?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    isset($jsonArray["results"]) ? $results = $jsonArray["results"] : $results = false;
    if ($results === false) {
      var_dump($result);
      echo "No results found";
    }
    else {
      if ($isNext) {
        $next = $jsonArray["metadata"]["next"];
      }
      while ($isNext) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $next);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $result = curl_exec($ch);
        curl_close($ch);
        $results = array_merge($results, json_decode($result, true)["results"]);
        $isNext = isset(json_decode($result, true)["metadata"]["next"]);
        $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
      }

      header('Content-Type', "application/json");
      echo json_encode($results);
    }
  });

  // Accept only numbers as parameter. Other characters will result in a 404 error
  $router->get('/worklogs/project/:key',function($key){
    $authorization = "Authorization: Bearer 5wOCcgUo5oyVuK39Kaw3J7hLthRXR2";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.tempo.io/core/3/worklogs/project/$key?limit=1000");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    $jsonArray = json_decode($result, true);
    $isNext = isset($jsonArray["metadata"]["next"]);
    isset($jsonArray["results"]) ? $results = $jsonArray["results"] : $results = false;
    if ($results === false) {
      var_dump($result);
      echo "No results found";
    }
    else {
      if ($isNext) {
        $next = $jsonArray["metadata"]["next"];
      }
      while ($isNext) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $next);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $result = curl_exec($ch);
        curl_close($ch);
        $results = array_merge($results, json_decode($result, true)["results"]);
        $isNext = isset(json_decode($result, true)["metadata"]["next"]);
        $isNext ? $next = json_decode($result, true)["metadata"]["next"] : false;
      }

      header('Content-Type', "application/json");
      echo json_encode($results);
    }
  });

  $router->run();

  // $CLIENT_ID = "onZbvjslPOShThYY5lt06I4wE1Z5MpTLnAKlRpui";
  // $REDIRECT_URI = "www2.itycom.com/tempo";
  // $accountId = "5d6cd907f741f80daea102f0";

  

  // J2ZbD3I6gBC2KP1PkQpIH5YjE7V6NE
?>