<?php
require_once __DIR__ . '/api_common.php';
require_once __DIR__ . '/../db_bootstrap.php';
require_once __DIR__ . '/../install_link_lib.php';

$conn = api_ensure_db(true);
if (!($conn instanceof mysqli)) api_json_out(['ok' => false, 'message' => 'قاعدة البيانات غير جاهزة.'], 500);
ua_link_ensure_schema($conn);

$raw = file_get_contents('php://input');
$data = json_decode((string)$raw, true);
if (!is_array($data)) $data = $_POST;

$instanceId = preg_replace('/[^a-zA-Z0-9_\-]/', '', (string)($data['instance_id'] ?? ''));
$secret = trim((string)($data['secret'] ?? ''));
$clientPlatform = strtolower(trim((string)($data['client_platform'] ?? '')));
$remoteAddr = trim((string)($_SERVER['REMOTE_ADDR'] ?? ''));
if ($instanceId === '' || $secret === '') api_json_out(['ok' => false, 'message' => 'بيانات فحص الربط ناقصة.'], 400);
if (!ua_link_rate_limit($conn, 'status', $instanceId . '|' . $remoteAddr, 120, 60)) {
  api_json_out(['ok' => false, 'message' => 'طلبات فحص كثيرة. حاول مجدداً بعد دقيقة.'], 429);
}

$idEsc = $conn->real_escape_string($instanceId);
$rs = @$conn->query("SELECT * FROM ua_link_requests WHERE instance_id='$idEsc' LIMIT 1");
if (!$rs || !$rs->num_rows) api_json_out(['ok' => false, 'status' => 'unlinked', 'message' => 'طلب الربط غير موجود في النسخة الرئيسية.'], 404);
$row = $rs->fetch_assoc();
if (!hash_equals((string)($row['request_secret_hash'] ?? ''), ua_link_secret_hash($secret))) {
  api_json_out(['ok' => false, 'message' => 'سر طلب الربط غير صحيح.'], 403);
}

@$conn->query("UPDATE ua_link_requests SET last_seen_at=NOW(), updated_at=NOW() WHERE instance_id='$idEsc'");
api_json_out($clientPlatform === 'android'
  ? ua_link_mobile_request_payload($row)
  : ua_link_request_payload($row, true, $conn));
