<?php
declare(strict_types=1);
require_once __DIR__ . '/_util.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') json_response(["error"=>"POST required"], 405);

$raw = file_get_contents('php://input') ?: '';
$data = json_decode($raw, true);
if (!$data) json_response(["error"=>"Invalid JSON"], 400);

if (!isset($data['world'], $data['champions'], $data['quests'], $data['inventory'])) {
  json_response(["error"=>"Save file missing required keys"], 400);
}

write_json_atomic(data_path('world.json'), $data['world']);

foreach (["mon","tue","wed","thu","fri","sat","sun"] as $id) {
  if (isset($data['champions'][$id])) {
    write_json_atomic(data_path("champions/$id.json"), $data['champions'][$id]);
  }
}

$quests = $data['quests'];
if (isset($quests['dailies'])) write_json_atomic(data_path('quests/dailies.json'), $quests['dailies']);
if (isset($quests['goals'])) write_json_atomic(data_path('quests/goals.json'), $quests['goals']);
if (isset($quests['random_pool'])) write_json_atomic(data_path('quests/random_pool.json'), $quests['random_pool']);

$inv = $data['inventory'];
if (isset($inv['supplements'])) write_json_atomic(data_path('inventory/supplements.json'), $inv['supplements']);
if (isset($inv['stash'])) write_json_atomic(data_path('inventory/stash.json'), $inv['stash']);
if (isset($inv['wishlist'])) write_json_atomic(data_path('inventory/wishlist.json'), $inv['wishlist']);

json_response(["ok"=>true, "importedAt"=>iso_now()]);