<?php
if (count(get_included_files()) === 1) { http_response_code(403); exit('Forbidden'); }

$lang = (($_GET['lang'] ?? $_SESSION['pending_lang'] ?? 'es') === 'en') ? 'en' : 'es';

// Guardar plan seleccionado en la landing para después del OAuth
$validPlans = ['free', 'growth', 'pro'];
if (isset($_GET['plan']) && in_array($_GET['plan'], $validPlans, true)) {
    $_SESSION['pending_plan'] = $_GET['plan'];
}

// ── AJAX: inferir rubro del nombre ────────────────────────────────────────────
if (($_GET['action'] ?? '') === 'infer') {
    header('Content-Type: application/json');
    $nombre = mb_substr(trim($_GET['name'] ?? ''), 0, 160);
    if ($nombre === '') { echo json_encode(['rubro'=>'general','especialidad'=>null,'confianza'=>0.0]); exit; }
    try {
        require_once dirname(__DIR__) . '/services/rubro_service.php';
        echo json_encode(RubroService::inferirRubro($nombre));
    } catch (Throwable $e) {
        error_log('[wizard/infer] ' . $e->getMessage());
        echo json_encode(['rubro'=>'general','especialidad'=>null,'confianza'=>0.0]);
    }
    exit;
}

// ── AJAX: sugerir servicios para el rubro ─────────────────────────────────────
if (($_GET['action'] ?? '') === 'services') {
    header('Content-Type: application/json');
    $rubro        = mb_substr(trim($_GET['rubro']        ?? 'general'), 0, 20);
    $especialidad = mb_substr(trim($_GET['especialidad'] ?? ''), 0, 120);
    try {
        require_once dirname(__DIR__) . '/services/rubro_service.php';
        echo json_encode(RubroService::sugerirServicios($rubro, $especialidad ?: null));
    } catch (Throwable $e) {
        error_log('[wizard/services] ' . $e->getMessage());
        echo json_encode([]);
    }
    exit;
}

// ── POST: guardar datos recolectados antes de Google ──────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name    = mb_substr(trim($_POST['biz_name']     ?? ''), 0, 160);
    $rubro   = mb_substr(trim($_POST['rubro']        ?? ''), 0, 20);
    $espec   = mb_substr(trim($_POST['especialidad'] ?? ''), 0, 120);
    $hours   = mb_substr(trim($_POST['horarios']     ?? ''), 0, 500);
    $svcsRaw = $_POST['servicios'] ?? '';

    if ($name !== '') {
        $_SESSION['pending_name'] = $name;
        $_SESSION['pending_type'] = $rubro ?: 'general';
    }
    if ($rubro) $_SESSION['pending_rubro']        = $rubro;
    if ($espec) $_SESSION['pending_especialidad']  = $espec;
    if ($hours) $_SESSION['pending_horarios']      = $hours;

    if ($svcsRaw) {
        $svcs = json_decode($svcsRaw, true);
        if (is_array($svcs)) $_SESSION['pending_servicios'] = $svcs;
    }

    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) {
        header('Content-Type: application/json');
        echo json_encode(['ok' => true]);
        exit;
    }

    header('Location: /auth/google?lang=' . $lang);
    exit;
}

require dirname(__DIR__) . '/views/wizard.php';
