<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: X-Api-Key, Content-Type');

$API_KEY = 'nordfracht-2026';
$DATEI   = (getenv('DATA_DIR') ?: __DIR__) . '/auftraege.json';

function sende($status, $daten, $location = null) {
    http_response_code($status);
    if ($location !== null) header('Location: ' . $location);
    echo json_encode($daten, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    exit;
}
function lade($datei) {
    if (!file_exists($datei)) {
        $start = array(
            array('auftragsNr'=>1001,'kunde'=>'Ostsee Handel GmbH','datum'=>'2026-03-12','status'=>'offen'),
            array('auftragsNr'=>1002,'kunde'=>'Nordlicht AG','datum'=>'2026-03-13','status'=>'versandt')
        );
        file_put_contents($datei, json_encode($start));
        return $start;
    }
    return json_decode(file_get_contents($datei), true);
}
function speichere($datei, $liste) { file_put_contents($datei, json_encode($liste)); }

$key = isset($_SERVER['HTTP_X_API_KEY']) ? $_SERVER['HTTP_X_API_KEY'] : '';
if ($key !== $API_KEY) sende(401, array('error' => 'API-Key fehlt oder ist ungueltig'));

$methode = $_SERVER['REQUEST_METHOD'];
$pfad    = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$liste   = lade($DATEI);

if (preg_match('#^/auftraege(?:/(\d+))?/?$#', $pfad, $m)) {
    $id = isset($m[1]) ? (int)$m[1] : null;

    if ($methode === 'GET' && $id === null) sende(200, $liste);

    if ($methode === 'GET') {
        foreach ($liste as $a) if ((int)$a['auftragsNr'] === $id) sende(200, $a);
        sende(404, array('error' => "Auftrag $id existiert nicht"));
    }

    if ($methode === 'POST' && $id === null) {
        $body = json_decode(file_get_contents('php://input'), true);
        // auftragsNr kommt vom Partner (Referenz) und wird uebernommen - nicht neu vergeben.
        if ($body === null || !isset($body['auftragsNr']) || !isset($body['kunde']))
            sende(400, array('error' => 'Ungueltiger Body (auftragsNr und kunde noetig)'));
        $nr = (int)$body['auftragsNr'];
        foreach ($liste as $a) if ((int)$a['auftragsNr'] === $nr)
            sende(409, array('error' => "Auftrag $nr existiert bereits"));
        $neu = array(
            'auftragsNr' => $nr,
            'kunde'      => $body['kunde'],
            'datum'      => isset($body['datum'])  ? $body['datum']  : date('Y-m-d'),
            'status'     => isset($body['status']) ? $body['status'] : 'offen'
        );
        $liste[] = $neu;
        speichere($DATEI, $liste);
        sende(201, $neu, '/auftraege/' . $nr);
    }

    sende(400, array('error' => 'Methode auf dieser Ressource nicht vorgesehen'));
}

sende(404, array('error' => 'Unbekannte Ressource'));
