#!/usr/bin/env python3
"""
Drucker-Datenbank Setup für MYP Platform
Trägt die hardkodierten Drucker in die Datenbank ein.
"""

import os
import sys
sys.path.append('.')

from config.settings import PRINTERS
from database.db_manager import DatabaseManager
from models import Printer
from datetime import datetime

def setup_drucker():
    """Trägt die hardkodierten Drucker in die Datenbank ein."""
    print("=== MYP Platform - Drucker-Setup ===")
    print(f"Hardkodierte Drucker: {len(PRINTERS)}")
    
    try:
        db = DatabaseManager()
        session = db.get_session()
        
        # Alle existierenden Drucker löschen
        existing_printers = session.query(Printer).all()
        if existing_printers:
            print(f"Lösche {len(existing_printers)} existierende Drucker...")
            for printer in existing_printers:
                session.delete(printer)
            session.commit()
            print("✅ Alle alten Drucker gelöscht")
        else:
            print("Keine existierenden Drucker gefunden")
        
        # Neue Drucker hinzufügen
        added_count = 0
        
        for printer_name, config in PRINTERS.items():
            # Neuen Drucker erstellen
            new_printer = Printer(
                name=printer_name,
                model="P115",  # Standard-Modell
                location="Werk 040 - Berlin - TBA",  # Aktualisierter Standort
                ip_address=config["ip"],
                mac_address=f"98:25:4A:E1:{printer_name[-1]}0:0{printer_name[-1]}",  # Dummy MAC
                plug_ip=config["ip"],
                plug_username="admin",
                plug_password="admin",
                status="available",  # Verfügbar, da in Konfiguration
                active=True,
                created_at=datetime.now()
            )
            
            session.add(new_printer)
            print(f"✅ {printer_name}: Hinzugefügt (IP: {config['ip']})")
            added_count += 1
        
        # Änderungen speichern
        session.commit()
        session.close()
        
        print(f"\n✅ {added_count} neue Drucker erfolgreich hinzugefügt")
        return True
        
    except Exception as e:
        print(f"❌ Fehler beim Setup der Drucker: {e}")
        import traceback
        traceback.print_exc()
        if 'session' in locals():
            session.rollback()
            session.close()
        return False

def list_drucker():
    """Zeigt alle Drucker in der Datenbank an."""
    print("\n=== Drucker in der Datenbank ===")
    
    try:
        db = DatabaseManager()
        session = db.get_session()
        
        printers = session.query(Printer).all()
        
        if not printers:
            print("Keine Drucker in der Datenbank gefunden.")
            return True
        
        print(f"{'ID':<5} {'Name':<15} {'Status':<12} {'IP-Adresse':<15} {'Aktiv':<8}")
        print("-" * 60)
        
        for printer in printers:
            active_str = "✅" if printer.active else "❌"
            print(f"{printer.id:<5} {printer.name:<15} {printer.status:<12} {printer.ip_address:<15} {active_str:<8}")
        
        session.close()
        
        print(f"\nGesamt: {len(printers)} Drucker")
        return True
        
    except Exception as e:
        print(f"❌ Fehler beim Abrufen der Drucker: {e}")
        if 'session' in locals():
            session.close()
        return False

if __name__ == "__main__":
    print("MYP Platform - Drucker-Datenbank Setup")
    print("=" * 40)
    
    success = setup_drucker()
    if success:
        list_drucker()
        print("\n✅ Drucker-Setup erfolgreich abgeschlossen!")
    else:
        print("\n❌ Drucker-Setup fehlgeschlagen!")
        sys.exit(1) 