#!/usr/bin/perl
# run_audi_export.pl  07Aug2024/uk  mit Hilfe von ChatGPT

use strict;
use warnings;
use Text::CSV;

# Stelle sicher, dass das Audi_Export Modul im gleichen Verzeichnis oder in einem in @INC enthaltenen Verzeichnis ist
use lib '.';
use Audi_Export;

# Instanz des Audi_Export Moduls erstellen
my $exporter = Audi_Export->new('USB-Stick');

# Definiere POI-Typen
$exporter->define_type('Tradis', 'Tradis', 'icons/Tradis.png');
$exporter->define_type('MyFinds', 'MyFinds', 'icons/MyFinds.png');
$exporter->define_type('Favoriten', 'Favoriten', 'icons/Favoriten.png');

# Liste der CSV-Dateien und ihrer Typen
my @files = (
    { file => 'data/Tradis.CSV', type => 'Tradis' },
    { file => 'data/MyFinds.CSV', type => 'MyFinds' },
    { file => 'data/Favoriten.CSV', type => 'Favoriten' },
);

# Verarbeite jede Datei
foreach my $file_info (@files) {
    my $csv_file = $file_info->{file};
    print "Processing $csv_file\n";  # Ausgabe des aktuellen Dateinamens

    # Versuche die Datei zu öffnen
    my $csv_fh;
    if (!open $csv_fh, '<', $csv_file) {
        warn "Could not open '$csv_file': $! - proceeding anyway\n";
        next;  # Springe zum nächsten Durchlauf der Schleife, wenn die Datei nicht geöffnet werden kann
    }

    # Initialisiere den CSV-Parser nur wenn das Öffnen erfolgreich war
    my $csv = Text::CSV->new({ binary => 1, auto_diag => 1, allow_loose_quotes => 1 });

    # Überspringe die Kopfzeile, falls vorhanden
    # <$csv_fh>;

    while (my $row = $csv->getline($csv_fh)) {
        # Annahme: LAT, LON, NAME sind in den Spalten 0, 1 und 2
        my $lat = $row->[0];
        my $lon = $row->[1];
        my $name = $row->[2];
        $exporter->add_location($lat, $lon, $name, $file_info->{type});
    }

    close $csv_fh;
}

# Daten speichern
print "Creating DataBase and directory-structure...\n";
print "   --> This may take *many* minutes!\n";
$exporter->save;

## my $stats = $exporter->get_type_stats();
## foreach my $type (keys %{$stats}) {
##     print "Typ $type hat $stats->{$type} Einträge.\n";
## }

print "POI-Daten wurden verarbeitet und gespeichert.\n";

print "Typ 0: Tradis   Typ 1: MyFinds   Typ 2: Favoriten \n";

system("perl query_poidata.pl | grep 'Einträge'");


