<?php
function parseCSV($filename) {
    // Sprawdzamy, czy plik istnieje
    if (!file_exists($filename) || !is_readable($filename)) {
        return false;
    }

    // Inicjalizujemy tablicę, do której zapiszemy dane
    $data = [];

    // Otwieramy plik do odczytu
    if (($handle = fopen($filename, 'r')) !== false) {
        // Pobieramy nagłówki
        $header = fgetcsv($handle, 0, ';');

        // Sprawdzamy, czy nagłówki zostały poprawnie wczytane
        if ($header) {
            // Odczytujemy pozostałe wiersze
            while (($row = fgetcsv($handle, 0, ';')) !== false) {
                // Podstawowe dane zamówienia
                $orderData = array_combine($header, $row);

                // Znajdujemy produkty w zamówieniu
                for ($i = 1; $i <= 58; $i++) {
                    $product_id_key = "product_id $i";
                    $product_name_key = "product_name $i";

                    if (!empty($orderData[$product_id_key])) {
                        // Tworzymy nowy wpis dla każdego produktu
                        $singleProductOrder = [
                            'ORDER_ID' => $orderData['order_id'],
                            'EMAIL' => $orderData['email'],
                            'FIRST_NAME' => explode(' ', $orderData['name'], 2)[0],
                            'LAST_NAME' => isset(explode(' ', $orderData['name'], 2)[1]) ? explode(' ', $orderData['name'], 2)[1] : '',
                            'PRODUCT_ID' => $orderData[$product_id_key],
                            'PRODUCT_NAME' => $orderData[$product_name_key]
                        ];

                        // Dodajemy wpis do danych
                        $data[] = $singleProductOrder;
                    }
                }
            }
        }
        // Zamykamy plik
        fclose($handle);
    }

    // Zwracamy tablicę z danymi
    return $data;
}

// Funkcja do zapisu danych do pliku CSV
function saveToCSV($filename, $data) {
    // Otwieramy plik do zapisu
    if (($handle = fopen($filename, 'w')) !== false) {
        // Zapisujemy nagłówki
        fputcsv($handle, ['ORDER_ID', 'EMAIL', 'FIRST_NAME', 'LAST_NAME', 'PRODUCT_ID', 'PRODUCT_NAME'], ';');

        // Zapisujemy dane
        foreach ($data as $row) {
            fputcsv($handle, [
                $row['ORDER_ID'],
                $row['EMAIL'],
                $row['FIRST_NAME'],
                $row['LAST_NAME'],
                $row['PRODUCT_ID'],
                $row['PRODUCT_NAME']
            ], ';');
        }

        // Zamykamy plik
        fclose($handle);
    }
}

// Ścieżka do pliku CSV do wczytania
$filename = 'd3ab9b0322d52e4773ccbeb673779311.order.csv';

// Wywołujemy funkcję i zapisujemy wynik do zmiennej
$data = parseCSV($filename);

// Ścieżka do pliku CSV do zapisu
$outputFilename = 'orders.csv';

// Zapisujemy przetworzone dane do nowego pliku CSV
saveToCSV($outputFilename, $data);

echo "Dane zostały zapisane do pliku $outputFilename.\n";
?>
