connect_error) { die("Connection failed: " . $conn->connect_error); } // Check if JSON was received via POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Receive JSON from the laboratory $json_data = file_get_contents('php://input'); // Decode JSON for optional validation $decoded_data = json_decode($json_data, true); // If the JSON is valid if (json_last_error() === JSON_ERROR_NONE) { // Authenticate using key, secret_key, and reflab if (!isset($decoded_data['key']) || !isset($decoded_data['secret_key']) || !isset($decoded_data['reflab'])) { echo json_encode([ "status" => "error", "message" => "Missing authentication fields (key, secret_key, reflab)." ]); exit; } $api_key = $decoded_data['key']; $secret_key = $decoded_data['secret_key']; $reflab = $decoded_data['reflab']; // For testing purposes, use hardcoded credentials $valid_api_key = 'api_key_123'; $valid_secret_key = 'api_secret_123'; $valid_reflab = 'REF001'; if ($api_key !== $valid_api_key) { echo json_encode([ "status" => "error", "message" => "Invalid API key." ]); exit; } if ($secret_key !== $valid_secret_key) { echo json_encode([ "status" => "error", "message" => "Invalid secret key." ]); exit; } if ($reflab !== $valid_reflab) { echo json_encode([ "status" => "error", "message" => "Invalid reflab." ]); exit; } // Generate a UUID to uniquely identify the record $uuid = uniqid(); // Alternatively, use UUID() in MySQL // Extract some information from JSON if (!isset($decoded_data['product']['products_refnumber'])) { echo json_encode([ "status" => "error", "message" => "Missing product reference number." ]); exit; } $product_refnumber = $decoded_data['product']['products_refnumber']; // Product number $report_number = $decoded_data['product']['reports'][0]['reportsNumberLab'] ?? null; // Report number $rating = $decoded_data['product']['reports'][0]['reportsRating'] ?? null; // Report rating (e.g., Pass/Fail) $saved_at = date("Y-m-d H:i:s"); // Save date // Query to insert data into the temp_json_queue table $stmt = $conn->prepare("INSERT INTO temp_json_queue (uuid, lab_id, json_data) VALUES (?, ?, ?)"); $lab_id = 1; // Set lab_id to a fixed value for testing purposes $stmt->bind_param("sss", $uuid, $lab_id, $json_data); if ($stmt->execute()) { // Set a session variable to notify the report import $_SESSION['new_report'] = [ 'report_number' => $report_number, 'rating' => $rating, 'timestamp' => time() // You can use a timestamp to manage the expiration of the notification ]; echo json_encode([ "status" => "success", "message" => "Data successfully saved.", "uuid" => $uuid, "product_refnumber" => $product_refnumber, // Product number "report_number" => $report_number, // Report number "rating" => $rating, // Report rating "saved_at" => $saved_at // Save date ]); } else { echo json_encode([ "status" => "error", "message" => "Failed to save data." ]); } $stmt->close(); } else { // If the JSON is invalid echo json_encode([ "status" => "error", "message" => "Invalid JSON format." ]); } } else { echo json_encode([ "status" => "error", "message" => "Invalid request method." ]); } // Close the database connection $conn->close();