<?php
// Einbeziehen der Konfigurationsdatei für die Datenbankverbindung
$config = require_once '../config/config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // Verbindung zur Datenbank herstellen
        $dsn = "mysql:host={$config['servername']};dbname={$config['database']};charset=utf8mb4";
        $pdo = new PDO($dsn, $config['username'], $config['password']);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // Überprüfen Sie, ob eine Datei hochgeladen wurde
        if (isset($_FILES["excel_file"]) && $_FILES["excel_file"]["error"] == UPLOAD_ERR_OK) {
            // Excel-Verarbeitungslogik
            $inputFileName = $_FILES["excel_file"]["tmp_name"];
            if (!file_exists($inputFileName)) {
                die("Die hochgeladene Datei existiert nicht.");
            }

            try {
                require_once '../vendor/autoload.php'; // Include autoload file for PhpSpreadsheet
                $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
                $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);

                // Durchlaufen Sie die Zeilen der Excel-Datei und fügen Sie die Daten in die Datenbank ein
                foreach ($sheetData as $row) {
                    // Debugging-Ausgabe
                    var_dump($row);

                    // Weitere Verarbeitung...
                    $manufacturer = $row['A'];
                    $set_name = $row['B'];
                    $article_number = $row['C'];
                    $ean_barcode = $row['D'];
                    $part1 = $row['E'];
                    $part1_ean = $row['F'];
                    $part2 = $row['G'];
                    $part2_ean = $row['H'];
                    $part3 = $row['I'];
                    $part3_ean = $row['J'];
                    $part4 = $row['K'];
                    $part4_ean = $row['L'];
                    $quantity = isset($row['M']) ? $row['M'] : 0; // Setze quantity auf 0, wenn sie leer ist

                    // Zählen Sie die Anzahl der Pakete
                    $packageCount = 0;
                    if (!empty($part1)) $packageCount++;
                    if (!empty($part2)) $packageCount++;
                    if (!empty($part3)) $packageCount++;
                    if (!empty($part4)) $packageCount++;

                    // Überprüfen, ob die Artikelnummer bereits vorhanden ist
                    $stmt_check = $pdo->prepare("SELECT article_number FROM articles WHERE article_number = ?");
                    $stmt_check->execute([$article_number]);
                    $existing_row = $stmt_check->fetch();

                    if (!$existing_row) {
                        // Führen Sie die Datenbankoperationen durch, um die Daten einzufügen
                        $stmt_insert = $pdo->prepare("INSERT INTO articles (manufacturer, set_name, article_number, ean_barcode, part1, part1_ean, part2, part2_ean, part3, part3_ean, part4, part4_ean, quantity) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                        $stmt_insert->execute([$manufacturer, $set_name, $article_number, $ean_barcode, $part1, $part1_ean, $part2, $part2_ean, $part3, $part3_ean, $part4, $part4_ean, $quantity]);
                    } else {
                        echo "Die Artikelnummer $article_number existiert bereits in der Datenbank.";
                    }
                }
            } catch (\Throwable $e) {
                // Fehlerbehandlung beim Lesen der Excel-Datei
                die("Fehler beim Lesen der Excel-Datei: " . $e->getMessage());
            }
        } else {
            // Verarbeiten Sie die Daten aus dem Formular
            $manufacturer = $_POST["manufacturer"];
            $set_name = $_POST["set_name"];
            $article_number = $_POST["article_number"];
            $ean_barcode = $_POST["ean_barcode"];
            $part1 = $_POST["part1"];
            $part1_ean = $_POST["part1_ean"];
            $part2 = $_POST["part2"];
            $part2_ean = $_POST["part2_ean"];
            $part3 = $_POST["part3"];
            $part3_ean = $_POST["part3_ean"];
            $part4 = $_POST["part4"];
            $part4_ean = $_POST["part4_ean"];
            $quantity = isset($_POST["quantity"]) ? $_POST["quantity"] : 0; // Setze quantity auf 0, wenn sie leer ist

            // Zählen Sie die Anzahl der Pakete
            $packageCount = 0;
            if (!empty($part1)) $packageCount++;
            if (!empty($part2)) $packageCount++;
            if (!empty($part3)) $packageCount++;
            if (!empty($part4)) $packageCount++;

            // Überprüfen, ob die Artikelnummer bereits vorhanden ist
            $stmt_check = $pdo->prepare("SELECT article_number FROM articles WHERE article_number = ?");
            $stmt_check->execute([$article_number]);
            $existing_row = $stmt_check->fetch();

            if (!$existing_row) {
                // Führen Sie die Datenbankoperationen durch, um die Daten einzufügen
                $stmt_insert = $pdo->prepare("INSERT INTO articles (manufacturer, set_name, article_number, ean_barcode, part1, part1_ean, part2, part2_ean, part3, part3_ean, part4, part4_ean, quantity) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                $stmt_insert->execute([$manufacturer, $set_name, $article_number, $ean_barcode, $part1, $part1_ean, $part2, $part2_ean, $part3, $part3_ean, $part4, $part4_ean, $quantity]);
            } else {
                echo "Die Artikelnummer $article_number existiert bereits in der Datenbank.";
            }
        }

        // Weiterleiten oder eine Bestätigungsmeldung anzeigen
        header("Location: ../public/admin.php");
        exit();
    } catch (PDOException $e) {
        // Fehler bei der Datenbankverbindung oder bei der Datenbankoperation
        die("Database error: " . $e->getMessage());
    } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) {
        // Fehler beim Lesen der Excel-Datei
        die("Excel error: " . $e->getMessage());
    }
}
?>