<?php 
function write_log($message) {
    $logFile = 'api.log'; // Name of the log file
    $timestamp = date('Y-m-d H:i:s');
    $logMessage = "[$timestamp] $message\n";
    file_put_contents($logFile, $logMessage, FILE_APPEND);
}
header('Content-Type: application/json');
$json = file_get_contents('php://input');
write_log("Received request webengage: " . file_get_contents('php://input'));
$headers = getallheaders();
write_log("Received request header webengage: " . $headers['Authorization']);
if(!isset($headers['Authorization']) || empty($headers['Authorization'])){
    http_response_code(401);
    echo json_encode([
        'status' => 'failed',
        'statusCode' => 401,
        'error' => 'Invalid token format'
    ]);
    write_log("Token decode failed");
    exit;
}
$authHeader = $headers['Authorization'];
$token = trim(str_replace("Bearer", "", $authHeader));
$key = base64_decode($token);
if ($key === false) {
    http_response_code(401);
    echo json_encode([
        'status' => 'failed',
        'statusCode' => 401,
        'error' => 'Invalid token format'
    ]);
    write_log("Token decode failed");
    exit;
}
$timestamp = time();
$payload = $json;

$message = "$timestamp.$payload";
$signature = hash_hmac('sha256', $message, $key);
write_log("Generated signature: $signature");
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://empappsapi.kacst.gov.sa/api/ticket/create',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => $payload,
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    "X-KACST-Timestamp: $timestamp",
    "X-KACST-Signature: $signature"
  ],
]);
$response = curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
write_log("API Response (HTTP $http_code): " . substr($response, 0, 500));
$error = curl_error($curl);
curl_close($curl);
if ($error) {
    http_response_code(502);
    $errorResponse = [
        'status' => 'failed',
        'statusCode' => 502,
        'error' => 'Gateway error',
        'details' => $error
    ];
    echo json_encode($errorResponse);
    write_log("cURL Error: $error");
} else {
    http_response_code($http_code);
    header('Content-Type: application/json');
    echo $response;
}
?>