<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

// Отговор на preflight заявките (CORS)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}

$baseUploadDir = __DIR__ . '/uploads';

if (!file_exists($baseUploadDir)) {
    mkdir($baseUploadDir, 0755, true);
}

if (!empty($_FILES['files']['name'][0])) {
    
    // Ако фронтендът ни изпрати име на папка (за да групира файловете), я ползваме. Иначе генерираме нова.
    if (!empty($_POST['batchFolder'])) {
        $safeBatchName = preg_replace("/[^a-zA-Z0-9_-]/", "", $_POST['batchFolder']);
        $batchFolder = $baseUploadDir . '/' . $safeBatchName;
    } else {
        $dateStr = date('Y-m-d_H-i-s');
        $randomSuffix = rand(100, 999);
        $batchFolder = $baseUploadDir . "/upload_{$dateStr}_{$randomSuffix}";
    }
    
    if (!file_exists($batchFolder)) {
        mkdir($batchFolder, 0755, true);
    }
    
    $uploadedCount = 0;
    $errorsList = [];
    $totalFiles = count($_FILES['files']['name']);
    
    for ($i = 0; $i < $totalFiles; $i++) {
        $originalName = $_FILES['files']['name'][$i];
        $tmpName = $_FILES['files']['tmp_name'][$i];
        $error = $_FILES['files']['error'][$i];
        
        if ($error === UPLOAD_ERR_OK) {
            $safeName = preg_replace("/[^a-zA-Z0-9.\-_а-яА-Я ]/u", "_", $originalName);
            if (empty($safeName) || $safeName == null) {
                $ext = pathinfo($originalName, PATHINFO_EXTENSION);
                $safeName = 'file_' . uniqid() . '.' . $ext;
            }
            
            $destination = $batchFolder . '/' . $safeName;
            
            if (move_uploaded_file($tmpName, $destination)) {
                $uploadedCount++;
            } else {
                $errorsList[] = "Неуспешно преместване на файл: " . $originalName;
            }
        } else {
            $errorsList[] = "Грешка код {$error} за файл: " . $originalName;
        }
    }
    
    if ($uploadedCount > 0) {
        http_response_code(200);
        echo json_encode(['status' => 'success']);
    } else {
        http_response_code(400);
        echo json_encode(['status' => 'error', 'message' => 'Възникна грешка при запазването.']);
    }
} else {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'Няма избрани файлове.']);
}
?>
