<?php
require_once '../config/config.php';
header('Content-Type: application/json; charset=utf-8');
requireAuthentication();

try {
    $input = json_decode(file_get_contents('php://input'), true) ?: $_POST;
    $userId = isset($input['user_id']) ? intval($input['user_id']) : 0;
    if (!$userId) {
        http_response_code(400);
        echo json_encode(['success' => false, 'error' => 'user_id required']);
        exit;
    }

    $db = Database::getInstance();
    $user = $db->fetch('SELECT phone_number FROM users WHERE id = :id', ['id' => $userId]);
    if (!$user) {
        http_response_code(404);
        echo json_encode(['success' => false, 'error' => 'User not found']);
        exit;
    }

    // Use BotService to release hold (sends notification and clears flags)
    try {
        require_once __DIR__ . '/../services/BotService.php';
        $bot = new BotService();
        $bot->releaseHold($user['phone_number']);
        echo json_encode(['success' => true]);
    } catch (Exception $e) {
        // Fallback to direct DB update if BotService fails
        $db->update('users', ['on_hold' => 0, 'advisor_requested' => 0, 'bot_paused_until' => null], 'id = :id', ['id' => $userId]);
        echo json_encode(['success' => true, 'warning' => 'BotService failed, flags cleared directly']);
    }
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}
