# Printer Log Report 0.3
#
# Get-WinEvent on Englische Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational"
# Get-WinEvent on Deutsche Windows : Get-WinEvent -LogName "Microsoft-Windows-PrintService/Betriebsbereit"

$events = Get-WinEvent -LogName "Microsoft-Windows-PrintService/Operational" -MaxEvents 500 |
    Where-Object { $_.Id -eq 307 }

$logList = @()

foreach ($event in $events) {
    $message = $event.Message
    $user = ""
    $computer = ""
    $document = ""
    $printer = ""
    $pages = 0

    # Felhasználó és gép különválasztása
    if ($message -match "im Besitz von (.+?) wurde auf") {
        $fullUser = $matches[1].Trim()
        if ($fullUser -match "^(.+?) auf (.+)$") {
            $user = $matches[1].Trim()
            $computer = $matches[2].Trim()
        } else {
            $user = $fullUser
        }
    }

    # Nyomtató neve (pl. Jasenitz)
    if ($message -match "wurde auf (.+?) über Port") {
        $printer = $matches[1].Trim()
    }

    # Oldalszám (pl. Gedruckte Seiten: 1)
    if ($message -match "Gedruckte Seiten:\s+(\d+)") {
        $pages = [int]$matches[1]
    }

    # Dokument sorszám (pl. Dokument 62)
    if ($message -match "^Dokument\s+(\d+)") {
        $document = "Dokument " + $matches[1]
    }

    $logList += [PSCustomObject]@{
        Datum     = $event.TimeCreated
        Benutzer  = $user
        Computer  = $computer
        Dokument  = $document
        Drucker   = $printer
        Seiten    = $pages
    }
}

# Export részletes lista
$exportPfad = "$env:USERPROFILE\Desktop\drucklog_export.csv"
$logList | Export-Csv -Path $exportPfad -NoTypeInformation -Encoding UTF8

# ✅ Összesítés felhasználónként
$summary = $logList | Group-Object -Property Benutzer | ForEach-Object {
    $userGroup = $_.Group
    [PSCustomObject]@{
        Benutzer           = $_.Name
        Anzahl_Dokumente   = $userGroup.Count
        Gesamt_Seiten      = ($userGroup | Measure-Object -Property Seiten -Sum).Sum
    }
}

# Export összesítés
$summaryPfad = "$env:USERPROFILE\Desktop\drucklog_summary.csv"
$summary | Export-Csv -Path $summaryPfad -NoTypeInformation -Encoding UTF8

Write-Host "Exportálás kész:"
Write-Host "- Részletes lista: $exportPfad"
Write-Host "- Felhasználónkénti összesítés: $summaryPfad"
