<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

$file = __DIR__ . '/steps.json';
$baselineFile = __DIR__ . '/baseline.json';
$historyFile = __DIR__ . '/steps_history.json';

$data = file_exists($file) ? json_decode(file_get_contents($file), true) : ['steps' => 0];
$baseline = file_exists($baselineFile) ? json_decode(file_get_contents($baselineFile), true) : ['baseline' => 0];
$history = file_exists($historyFile) ? json_decode(file_get_contents($historyFile), true) : [];

// Set new baseline (from midnight macro)
if (isset($_GET['baseline'])) {
    $newBaseline = (int)$_GET['baseline'];

    if ($newBaseline === 0 && ($baseline['baseline'] ?? 0) > 0) {
        echo json_encode(['ok' => false, 'error' => 'Ignored zero baseline']);
        exit;
    }

    $yesterday = date('Y-m-d', strtotime('-1 day'));
    if (isset($data['steps']) && $data['steps'] > 0) {
        $history[$yesterday] = (int)$data['steps'];
        file_put_contents($historyFile, json_encode($history));
    }

    $baseline['baseline'] = $newBaseline;
    file_put_contents($baselineFile, json_encode($baseline));
    echo json_encode(['ok' => true, 'baseline' => $baseline['baseline']]);
    exit;
}

// Normal step update
if (isset($_GET['steps'])) {
    $raw = (int)$_GET['steps'];
    $daily = max(0, $raw - ($baseline['baseline'] ?? 0));
    $data['steps'] = $daily;
    $data['updated'] = date('c');
    file_put_contents($file, json_encode($data));
}

// Return history
if (isset($_GET['history'])) {
    $list = [];
    foreach ($history as $date => $steps) {
        $list[] = ['date' => $date, 'steps' => (int)$steps];
    }
    usort($list, fn($a, $b) => strcmp($a['date'], $b['date']));
    echo json_encode($list);
    exit;
}

// Return a specific date
if (isset($_GET['date'])) {
    $date = $_GET['date'];
    echo json_encode(['steps' => $history[$date] ?? 0, 'date' => $date]);
    exit;
}

echo json_encode($data);