# MySQL kapcsolati adatok
# Install-PackageProvider -Name NuGet -Force
# Register-PackageSource -Name NuGet -Location https://www.nuget.org/api/v2/ -ProviderName NuGet -Trusted
# Install-Package MySql.Data -Force
# Oder : https://dev.mysql.com/downloads/connector/net/

$mysqlServer = "localhost"  # vagy a szerver IP/cím
$mysqlDatabase = "rdp_log"  # az adatbázis neve
$mysqlUser = "rdplog"  # felhasználónév
$mysqlPassword = "Test123#"  # jelszó

# Forrás és célmappa
$sourceFolder = "C:\RdpLog\Logs"  # a mappa, ahol a CSV fájlok vannak
$destinationFolder = "C:\RdpLog\Archive"  # a mappa, ahova áthelyezzük a feldolgozott fájlokat

# MySQL kapcsolódás
Add-Type -Path "C:\Program Files\PackageManagement\NuGet\Packages\MySql.Data.9.4.0\lib\net9.0\MySql.Data.dll"  # cseréld le a valós útvonalra!
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = "server=$mysqlServer;database=$mysqlDatabase;uid=$mysqlUser;pwd=$mysqlPassword;"
$connection.Open()

# Minden CSV fájl feldolgozása
Get-ChildItem -Path $sourceFolder -Filter "*.csv" | ForEach-Object {
    $csvPath = $_.FullName
    $csvData = Import-Csv -Path $csvPath -Delimiter "," -Encoding UTF8

    Write-Host "Feldolgozás alatt: $csvPath"

    # Adatok feltöltése az adatbázisba
    foreach ($row in $csvData) {
        $query = "INSERT INTO rdplog (ServerName, LogName, EventID, SessionID, Ursachencode, Level, UserName, Message, TimeCreated) VALUES (@ServerName, @LogName, @EventID, @SessionID, @Ursachencode, @Level, @UserName, @Message, @TimeCreated)"

        $command = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $connection)

        # Paraméterek hozzáadása
        $command.Parameters.AddWithValue("@ServerName", $row.ServerName) | Out-Null
        $command.Parameters.AddWithValue("@LogName", $row.LogName) | Out-Null
        $command.Parameters.AddWithValue("@EventID", $row.EventID) | Out-Null
        $command.Parameters.AddWithValue("@SessionID", $row.SessionID) | Out-Null
        $command.Parameters.AddWithValue("@Ursachencode", $row.Ursachencode) | Out-Null
        $command.Parameters.AddWithValue("@Level", $row.Level) | Out-Null
        $command.Parameters.AddWithValue("@UserName", $row.UserName) | Out-Null
        $command.Parameters.AddWithValue("@Message", $row.Message) | Out-Null

        # TimeCreated átalakítása (ha szükséges)
        $timeCreated = [datetime]::ParseExact($row.TimeCreated, "dd.MM.yyyy HH:mm:ss", $null)
        $command.Parameters.AddWithValue("@TimeCreated", $timeCreated) | Out-Null

        # Lekérdezés végrehajtása
        $command.ExecuteNonQuery() | Out-Null
    }

    # Fájl áthelyezése a célmappába
    Move-Item -Path $csvPath -Destination $destinationFolder -Force
    Write-Host "Fájl áthelyezve: $csvPath -> $destinationFolder"
}

# Kapcsolat bezárása
$connection.Close()

Write-Host "Minden fájl sikeresen feldolgozva és áthelyezve!"
