<?php
// POST iphone_confirm_pair.php
// iPhone scans QR or enters 8-char code
require_once 'config.php';
file_put_contents("/tmp/cp.log",date("H:i:s")." IN: ".file_get_contents("php://input")."\n",FILE_APPEND);

$data = get_input();
require_fields($data, ['device_id', 'pair_code']);

$db = getDB();
$device_id = trim($data['device_id']);
$pair_code = strtoupper(preg_replace('/[^A-Z0-9]/i', '', $data['pair_code'])); // strip dashes

// Find viewer
$stmt = $db->prepare('SELECT id FROM devices_viewer WHERE device_id = ?');
$stmt->execute([$device_id]);
$viewer = $stmt->fetch();
if (!$viewer) respond(['error' => true, 'message' => 'Viewer device not registered']);
$viewer_id = $viewer['id'];

// Find pending pairing
$stmt = $db->prepare('
    SELECT p.id, p.wa_account_id, p.created_at, wa.wa_phone, de.platform
    FROM pairings p
    JOIN wa_accounts wa ON wa.id = p.wa_account_id
    JOIN devices_engine de ON de.id = wa.engine_device_id
    WHERE p.pair_code = ? AND p.status = "pending"
');
$stmt->execute([$pair_code]);
$pairing = $stmt->fetch();

if (!$pairing) respond(['error' => true, 'message' => 'Invalid or expired code']);

// Check expiry (5 minutes)
$created = strtotime($pairing['created_at']);
if (time() - $created > 300) {
    $stmt = $db->prepare('DELETE FROM pairings WHERE id = ?');
    $stmt->execute([$pairing['id']]);
    respond(['error' => true, 'message' => 'Code expired']);
}

// Check if already paired to this wa_account
$stmt = $db->prepare('SELECT id FROM pairings WHERE wa_account_id = ? AND viewer_device_id = ? AND status = "active"');
$stmt->execute([$pairing['wa_account_id'], $viewer_id]);
if ($stmt->fetch()) {
    // Already paired — just delete the pending code
    $stmt = $db->prepare('DELETE FROM pairings WHERE id = ?');
    $stmt->execute([$pairing['id']]);
    respond(['error' => false, 'message' => 'Already paired', 'wa_phone' => $pairing['wa_phone'], 'already_paired' => true]);
}

// Activate pairing
$stmt = $db->prepare('UPDATE pairings SET viewer_device_id = ?, status = "active", paired_at = NOW() WHERE id = ?');
$stmt->execute([$viewer_id, $pairing['id']]);

respond([
    'error' => false,
    'paired' => true,
    'wa_phone' => $pairing['wa_phone'],
    'engine_platform' => $pairing['platform']
]);
