<?php
require_once __DIR__ . '/cors_preflight_inc.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'] !== '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');
    }

    $urls = jkex_resolve_import_urls($conn, $data);

    $expectedWebsiteId = isset($data['websiteId']) && $data['websiteId'] !== '' && $data['websiteId'] !== null
        ? intval($data['websiteId'])
        : null;

    $results = [];
    foreach ($urls as $url) {
        try {
            $parsed = jkex_parse_import_url($url);
            $apiData = jkex_fetch_api_json($url);
            $mapped = jkex_build_import_payloads($conn, $apiData, $parsed, $expectedWebsiteId);
            $results[] = array_merge(['success' => true], $mapped);
        } catch (Exception $itemError) {
            $results[] = [
                'success' => false,
                'meta' => ['url' => $url],
                'message' => $itemError->getMessage(),
                'records' => [],
                'counts' => ['new' => 0, 'exists' => 0, 'skip' => 0],
            ];
        }
    }

    $summary = [
        'totalUrls' => count($urls),
        'successUrls' => count(array_filter($results, function ($item) {
            return !empty($item['success']);
        })),
        'failedUrls' => count(array_filter($results, function ($item) {
            return empty($item['success']);
        })),
        'new' => 0,
        'exists' => 0,
        'skip' => 0,
    ];

    foreach ($results as $item) {
        if (empty($item['counts']) || !is_array($item['counts'])) {
            continue;
        }
        $summary['new'] += intval($item['counts']['new'] ?? 0);
        $summary['exists'] += intval($item['counts']['exists'] ?? 0);
        $summary['skip'] += intval($item['counts']['skip'] ?? 0);
    }

    echo json_encode([
        'success' => true,
        'summary' => $summary,
        'generatedUrlCount' => count($urls),
        'results' => $results,
    ], JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage(),
    ], JSON_UNESCAPED_UNICODE);
}

mysqli_close($conn);
