<?php
require_once '../../config.php';
require_once __DIR__ . '/jkex_daily_data_import_inc.php';

header('Content-Type: application/json; charset=utf-8');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode([
        'success' => false,
        'message' => 'POST method only'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    $input = file_get_contents('php://input');
    $data = json_decode($input, true);
    if (!is_array($data)) {
        throw new Exception('Invalid JSON payload');
    }

    $records = $data['records'] ?? null;
    if (!is_array($records) || count($records) === 0) {
        throw new Exception('没有可导入的记录');
    }

    $overwriteExisting = !empty($data['overwriteExisting']);
    $imported = 0;
    $updated = 0;
    $patched = 0;
    $skipped = 0;
    $errors = [];

    mysqli_begin_transaction($conn);

    foreach ($records as $index => $item) {
        $payload = null;
        if (is_array($item) && isset($item['payload']) && is_array($item['payload'])) {
            $payload = $item['payload'];
        } elseif (is_array($item)) {
            $payload = $item;
        }

        if (!$payload) {
            $errors[] = '第 ' . ($index + 1) . ' 条记录格式无效';
            continue;
        }

        try {
            $result = jkex_import_payload($conn, $payload, $overwriteExisting);
            if ($result['action'] === 'inserted') {
                $imported++;
            } elseif ($result['action'] === 'updated') {
                $updated++;
            } elseif ($result['action'] === 'patched') {
                $patched++;
            } else {
                $skipped++;
            }
        } catch (Exception $recordError) {
            $errors[] = '第 ' . ($index + 1) . ' 条: ' . $recordError->getMessage();
        }
    }

    if (count($errors) > 0 && $imported === 0 && $updated === 0 && $patched === 0) {
        mysqli_rollback($conn);
        throw new Exception(implode('; ', $errors));
    }

    mysqli_commit($conn);

    echo json_encode([
        'success' => true,
        'imported' => $imported,
        'updated' => $updated,
        'patched' => $patched,
        'skipped' => $skipped,
        'errors' => $errors,
        'message' => "导入完成：新增 {$imported} 条，更新 {$updated} 条，补写 {$patched} 条，跳过 {$skipped} 条",
    ], JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
    if (isset($conn)) {
        mysqli_rollback($conn);
    }
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage(),
    ], JSON_UNESCAPED_UNICODE);
}

mysqli_close($conn);
