# -*- coding: utf-8 -*-
import shutil
import os
import datetime
import subprocess
import ctypes
import sys
import tkinter
from tkinter import messagebox

def run_as_admin():
    if not ctypes.windll.shell32.IsUserAnAdmin():
        print("🔐 Starte Skript neu mit Adminrechten...")
        script = os.path.abspath(sys.argv[0])
        params = " ".join([f'"{arg}"' for arg in sys.argv[1:]])
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, f'"{script}" {params}', None, 1)
        sys.exit()

def ask_user(question):
    root = tkinter.Tk()
    root.withdraw()
    return messagebox.askyesno("Bestätigung", question)

def find_omsi_installation():
    possible_steam_dirs = [
        os.path.join(os.environ.get("PROGRAMFILES(X86)", ""), "Steam"),
        os.path.join(os.environ.get("PROGRAMFILES", ""), "Steam"),
        os.path.join("D:\\", "Steam"),
        os.path.join("E:\\", "Steam"),
    ]

    for steam_dir in possible_steam_dirs:
        omsi_path = os.path.join(steam_dir, "steamapps", "common", "OMSI 2")
        if os.path.exists(omsi_path):
            print(f"✅ OMSI 2 gefunden unter: {omsi_path}")
            return omsi_path

    print("❌ OMSI 2 konnte nicht automatisch gefunden werden.")
    sys.exit()

def replace_file_with_confirmation(source_path, target_path):
    if not os.path.exists(source_path):
        print(f"❌ Quelldatei '{source_path}' existiert nicht.")
        return

    if os.path.exists(target_path):
        if not ask_user(f"⚠️ Datei '{target_path}' existiert bereits. Ersetzen mit '{source_path}'?"):
            print("❌ Vorgang abgebrochen.")
            return

    try:
        shutil.copy2(source_path, target_path)
        print(f"✅ Datei erfolgreich ersetzt: '{target_path}' wurde mit '{source_path}' überschrieben.")
    except Exception as e:
        print(f"❌ Fehler beim Kopieren: {e}")

def replace_file_by_weekday(omsi_path, app_to_start):
    today = datetime.datetime.now().weekday()  # Montag = 0, Sonntag = 6

    # Quelle-Pfade
    quelle_wochentag = os.path.join(
        omsi_path, "Addons", "Lemmental_Neuenbreid", "_maps", "_Fahrgaststrom", "Mo-Fr", "global.cfg"
    )
    quelle_samstag = os.path.join(
        omsi_path, "Addons", "Lemmental_Neuenbreid", "_maps", "_Fahrgaststrom", "Sa", "global.cfg"
    )
    quelle_sonntag = os.path.join(
        omsi_path, "Addons", "Lemmental_Neuenbreid", "_maps", "_Fahrgaststrom", "So", "global.cfg"
    )

    if today <= 4:
        quelle = quelle_wochentag
        print("📅 Heute ist ein Werktag (Mo–Fr).")
    elif today == 5:
        quelle = quelle_samstag
        print("📅 Heute ist Samstag.")
    else:
        quelle = quelle_sonntag
        print("📅 Heute ist Sonntag.")

    ziel = os.path.join(omsi_path, "maps", "Lemmental_Neuenbreid", "global.cfg")
    replace_file_with_confirmation(quelle, ziel)

    # Anwendung starten
    print(f"🔄 Starte Anwendung: {app_to_start}")
    subprocess.Popen(app_to_start, shell=True)

if __name__ == "__main__":
    run_as_admin()

    omsi_path = find_omsi_installation()
    app = os.path.join(omsi_path, "Busbetrieb-Simulator", "launcher.exe")

    replace_file_by_weekday(omsi_path, app)
