<?php
ini_set('display_errors', 0);
error_reporting(0);

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200); exit();
}

$DATA_FILE   = __DIR__ . '/dashboard_data.json';
$BACKUP_FILE = __DIR__ . '/dashboard_data_backup.json';
$AUTH_TOKEN  = 'ikigai2025_iso';
$action      = isset($_GET['action']) ? $_GET['action'] : 'load';

// Token viene como parámetro GET (los headers personalizados son bloqueados por el hosting)
$token = isset($_GET['token']) ? $_GET['token'] : '';

if ($action === 'load') {
    if (!file_exists($DATA_FILE)) {
        echo json_encode(emptyState()); exit();
    }
    $content = file_get_contents($DATA_FILE);
    $decoded = json_decode($content, true);
    echo ($decoded !== null) ? $content : json_encode(emptyState());

} elseif ($action === 'save') {
    if ($token !== $AUTH_TOKEN) {
        http_response_code(401);
        echo json_encode(['error' => 'Token incorrecto. Recibido: "' . $token . '"']);
        exit();
    }
    $input = file_get_contents('php://input');
    if (empty($input)) {
        http_response_code(400);
        echo json_encode(['error' => 'Body vacio']); exit();
    }
    $data = json_decode($input, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        http_response_code(400);
        echo json_encode(['error' => 'JSON invalido: ' . json_last_error_msg()]); exit();
    }
    if (file_exists($DATA_FILE)) @copy($DATA_FILE, $BACKUP_FILE);
    $ok = file_put_contents($DATA_FILE, json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
    if ($ok !== false) {
        echo json_encode(['success' => true, 'bytes' => $ok, 'savedAt' => date('c')]);
    } else {
        http_response_code(500);
        echo json_encode(['error' => 'No se pudo escribir el archivo']);
    }

} elseif ($action === 'test') {
    echo json_encode([
        'status'      => 'ok',
        'php'         => phpversion(),
        'file_exists' => file_exists($DATA_FILE),
        'writable'    => is_writable(__DIR__),
        'token_recv'  => $token,
        'token_ok'    => ($token === $AUTH_TOKEN),
        'metodo'      => 'El token viaja como parametro GET (?token=...)',
    ]);

} else {
    echo json_encode(['error' => 'Accion desconocida: ' . $action]);
}

function emptyState() {
    return ['weeks'=>new stdClass(),'monthlyGoals'=>new stdClass(),'weeklyOverrides'=>new stdClass(),'tasks'=>new stdClass(),'currentPhase'=>1,'lastBy'=>'','lastAt'=>''];
}
?>
