"""
Dienstleistungen von David/Jam – Shop, Fiverr, Verkauf.
"""

from __future__ import annotations

from jam.paypal_donate import PAYPAL_EMAIL

# id, titel, preis_von, preis_bis, kurzbeschreibung, tags (fiverr)
SERVICE_OFFERINGS: list[dict] = [
    {
        "id": "minecraft_server",
        "title": "Minecraft Server Leitung & Setup",
        "price_from": 29,
        "price_to": 199,
        "icon": "⛏️",
        "fiverr_category": "Programming & Tech > Game Development",
        "description": (
            "Komplette Server-Einrichtung und laufende Leitung: Paper/Spigot oder Vanilla, "
            "Plugins auswählen, Rechte & Welten, Backups, Performance-Tuning, Whitelist, "
            "Updates. Remote per Anleitung oder Datei-Paket – Deutsch/Englisch."
        ),
        "bullets": [
            "Installation Paper/Spigot/Vanilla + server.properties",
            "Plugin-Setup, Permissions (LuckPerms o.ä.)",
            "Backup-Routine, RAM/View-Distance optimieren",
            "Support bei Crashes & Updates",
        ],
    },
    {
        "id": "minecraft_java",
        "title": "Minecraft Java Plugins & Mods (Spigot/Paper)",
        "price_from": 35,
        "price_to": 249,
        "icon": "☕",
        "fiverr_category": "Programming & Tech > Game Development",
        "description": (
            "Individuelle **Java-Plugins** für Paper/Spigot: Commands, Events, Economy, "
            "Minigames, Schutz, NPCs. Sauberer Code, plugin.yml, Build-Anleitung – "
            "inkl. kurzer Doku zum Installieren auf deinem Server."
        ),
        "bullets": [
            "Custom Commands & Listener",
            "Config (config.yml) auf Deutsch",
            "Maven/Gradle-Projekt oder fertige JAR",
            "Bugfixes nach Lieferung (Paket abhängig)",
        ],
    },
    {
        "id": "minecraft_scripts",
        "title": "Minecraft Skripte (JavaScript / Datenpacks / Skript-Plugins)",
        "price_from": 19,
        "price_to": 129,
        "icon": "📜",
        "fiverr_category": "Programming & Tech > Game Development",
        "description": (
            "Leichtere Logik ohne große Java-Mods: **Skript-Plugins** (Skript/BetonQuest), "
            "**Datenpacks** (1.20+), oder **JavaScript**-nahe Tools je nach Server-Typ. "
            "Ideal für Shops, Ränge, kleine Events, Custom-Crafts."
        ),
        "bullets": [
            "Skript/.sk Dateien mit Kommentaren",
            "Datenpack-Funktionen & Loot-Tables",
            "Anbindung an bestehende Plugins",
            "Schnelle Anpassungen nach Wunsch",
        ],
    },
    {
        "id": "minecraft_full",
        "title": "Minecraft Komplett-Paket (Server + Plugins + Skripte)",
        "price_from": 79,
        "price_to": 399,
        "icon": "🎮",
        "fiverr_category": "Programming & Tech > Game Development",
        "description": (
            "Alles aus einer Hand: Server aufsetzen, Java-Plugins, Skripte/Datenpacks, "
            "Konfiguration und Einführung. Für Communities, Freundes-Server oder kleine Netzwerke."
        ),
        "bullets": [
            "Setup + Leitung + Entwicklung kombiniert",
            "Dokumentation für dein Team",
            "Prioritäts-Support per Chat",
            "PayPal/Fiverr – Auszahlung an David",
        ],
    },
    {
        "id": "discord_setup",
        "title": "Discord Server einrichten + Bot",
        "price_from": 25,
        "price_to": 149,
        "icon": "💬",
        "fiverr_category": "Programming & Tech > Software Development",
        "description": (
            "Discord-Server strukturieren (Kanäle, Rollen), Bot erstellen und einladen, "
            "**eigene Python-Skripte** per Befehl ausführen (!ping, !shop, !run) – "
            "alles selbst geschrieben, konfigurierbar in scripts.json."
        ),
        "bullets": [
            "Developer-Portal, Token, Intents – Anleitung",
            "Bot-Befehle: !scripts, !run, !jam",
            "Neue Skripte: .py in scripts/ + JSON eintragen",
            "Anbindung Shop/Minecraft-Infos möglich",
        ],
    },
    {
        "id": "discord_scripts",
        "title": "Discord Bot – Custom-Skripte programmieren",
        "price_from": 35,
        "price_to": 199,
        "icon": "🤖",
        "fiverr_category": "Programming & Tech > Software Development",
        "description": (
            "Individuelle **Discord-Bot-Skripte** in Python: Befehle triggern Server-Aktionen, "
            "Statistiken, Nachrichten, Mini-Tools. Sicher nur aus whitelist – kein beliebiges Shell."
        ),
        "bullets": [
            "Ein Skript = ein Befehl (z. B. !whitelist, !status)",
            "Admin-only optional",
            "README + Einrichtung in Deutsch",
            "Erweiterbar ohne Bot-Neustart (nach Deploy)",
        ],
    },
    {
        "id": "python_tool",
        "title": "Python Mini-Tools & Automatisierung",
        "price_from": 15,
        "price_to": 89,
        "icon": "🐍",
        "fiverr_category": "Programming & Tech > Software Development",
        "description": (
            "Kleine Python-Skripte: Dateien, APIs, Discord-Bots light, Scraping, "
            "Tabellen – schnell umgesetzt mit Cursor/Jam."
        ),
        "bullets": ["README + requirements.txt", "Anpassbar im Code", "Deutsch/Englisch"],
    },
    {
        "id": "web_modern",
        "title": "Moderne Webseite erstellen lassen",
        "price_from": 49,
        "price_to": 199,
        "icon": "🌐",
        "fiverr_category": "Programming & Tech > Website Development",
        "description": (
            "Komplett **selbst programmiert** (HTML/CSS/JS): Hero, Leistungen, Preise, Kontakt – "
            "dunkles 2026-Design, mobil, schnell. Kein WordPress-Zwang."
        ),
        "bullets": [
            "Responsive One-Page oder mehrseitig",
            "PayPal / Kontakt / ki-web-studio-Stil",
            "Impressum & Datenschutz-Vorlagen",
            "Hosting: Netlify, Cloudflare Pages",
        ],
    },
    {
        "id": "web_business",
        "title": "Business-Webseite (Firmenauftritt)",
        "price_from": 79,
        "price_to": 299,
        "icon": "🏢",
        "fiverr_category": "Programming & Tech > Website Development",
        "description": (
            "Professioneller Firmenauftritt: Start, Leistungen, Team, Kontakt, FAQ – "
            "modern, vertrauenswürdig, SEO-Grundlagen."
        ),
        "bullets": [
            "Bis 5+ Unterseiten",
            "Kontaktformular-Hinweis (Formspree o.ä.)",
            "Logo-Farben nach Briefing",
            "Lieferung als site/ Ordner",
        ],
    },
    {
        "id": "web_portfolio",
        "title": "Portfolio & Creator-Webseite",
        "price_from": 59,
        "price_to": 179,
        "icon": "✨",
        "fiverr_category": "Programming & Tech > Website Development",
        "description": (
            "Zeig Projekte, Gaming, Design oder Code – moderne Galerie-Sections, "
            "Link zu Shop, Discord, Fiverr."
        ),
        "bullets": [
            "Projekt-Karten & Call-to-Action",
            "Social Links",
            "Perfekt für Freelancer & Streamer",
            "Referenz: ki-web-studio.de",
        ],
    },
    {
        "id": "web_landing",
        "title": "Landing Page / Link-in-Bio",
        "price_from": 39,
        "price_to": 129,
        "icon": "🔗",
        "fiverr_category": "Programming & Tech > Website Development",
        "description": (
            "Eine starke Seite für Werbung & Social: ein Klick zu PayPal, Shop oder Kontakt."
        ),
        "bullets": ["Schnelle Lieferung", "Mobile-first", "Hosting-Anleitung"],
    },
]


def offering_by_id(oid: str) -> dict | None:
    for o in SERVICE_OFFERINGS:
        if o["id"] == oid:
            return o
    return None


def fiverr_gig_text(
    offering: dict,
    *,
    owner: str = "David",
    standard_price: int | float | None = None,
    project_name: str = "",
) -> str:
    o = offering
    price = float(standard_price or o["price_from"])
    basic = max(5, int(price * 0.65))
    premium = int(price * 1.45)
    bullets = "\n".join(f"- {b}" for b in o.get("bullets", []))
    tags = "minecraft, server, java, plugin, spigot, paper, gaming, german, david, jam"
    if o["id"].startswith("discord"):
        tags = "discord, bot, python, script, server, gaming, german, jam, david"
    elif o["id"].startswith("web"):
        tags = "website, web design, landing page, responsive, html, css, modern, german, jam"
    elif o["id"] not in ("minecraft_server", "minecraft_java", "minecraft_scripts", "minecraft_full"):
        tags = "python, web, digital, german, jam, freelance"
    return (
        f"=== FIVERR GIG (Jam / David) ===\n\n"
        f"TITEL (max 80 Zeichen):\n{o['title'][:80]}\n\n"
        f"KATEGORIE-VORSCHLAG:\n{o['fiverr_category']}\n\n"
        f"BESCHREIBUNG:\n"
        f"Ich biete **{o['title']}** für **{owner}** / Kunden weltweit.\n\n"
        f"{o['description']}\n\n"
        f"✅ Leistungen:\n{bullets}\n\n"
        f"🛠️ Technik: "
        + (
            "discord.py, Python-Skripte, JSON-Registry."
            if o["id"].startswith("discord")
            else (
                "HTML5, CSS3, responsive, optional JS – kein Baukasten-Zwang."
                if o["id"].startswith("web")
                else "Paper, Spigot, Bukkit, Vanilla, Datenpacks, Java, Skript, optional JS."
            )
        )
        + "\n"
        f"💬 Kommunikation: Deutsch & Englisch · Lieferung als Dateien + Anleitung.\n\n"
        f"💳 PayPal / Fiverr-Auszahlung: **{PAYPAL_EMAIL}**\n\n"
        f"PAKETE (Vorschlag):\n"
        f"- Basic: {basic} EUR – kleiner Umfang / 1 Feature\n"
        f"- Standard: {int(price)} EUR – empfohlen (voller Scope laut Absprache)\n"
        f"- Premium: {premium} EUR – mehr Features + Priorität + Nachbetreuung\n\n"
        f"LIEFERZEIT: 2–7 Tage (je nach Umfang)\n\n"
        f"TAGS: {tags}\n\n"
        f"FAQ:\n"
        f"Q: Welche Minecraft-Version?\n"
        f"A: Abstimmung vor Start – meist aktuelle Paper-Version.\n\n"
        f"Q: Brauche ich eigenes Hosting?\n"
        f"A: Ja, oder ich helfe beim Setup (VPS/Realm-Hinweise).\n\n"
        f"Q: Custom?\n"
        f"A: Ja – {project_name or 'individuelles Projekt nach Briefing'}.\n"
    )


def services_page_html(*, owner: str, shared_css: str, esc) -> str:
    cards = []
    for o in SERVICE_OFFERINGS:
        bullets = "".join(f"<li>{esc(b)}</li>" for b in o.get("bullets", [])[:5])
        cards.append(
            f"""<article class="card service-card">
  <h3>{o['icon']} {esc(o['title'])}</h3>
  <p class="desc">{esc(o['description'])}</p>
  <p class="price">ab {o['price_from']} € · bis {o['price_to']} €</p>
  <ul class="svc-list">{bullets}</ul>
  <p class="meta">Anfrage per Fiverr @davidhutson2000 oder PayPal {esc(PAYPAL_EMAIL)}</p>
</article>"""
        )
    grid = "\n".join(cards)
    return f"""<!DOCTYPE html>
<html lang="de"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Dienstleistungen – Jam-Shop</title>
<style>
{shared_css}
.service-card .svc-list {{ margin: .5rem 0 0 1.1rem; padding: 0; font-size: .8rem; color: #94a3b8; }}
.service-card .svc-list li {{ margin-bottom: .25rem; }}
</style>
<script src="jam-stats.js"></script>
</head><body>
<header class="jam-hero">
  <span class="jam-badge">DIENSTLEISTUNGEN</span>
  <h1>Webseiten, Minecraft, Discord & Code</h1>
  <p class="sub">Alles was Jam/David anbietet – Server-Leitung, Plugins, Skripte und mehr. Für <strong>{esc(owner)}</strong>.</p>
</header>
<nav class="nav">
  <a href="index.html">🛒 Shop</a>
  <a href="dienstleistungen.html">🛠️ Leistungen</a>
  <a href="dashboard.html">📊 Dashboard</a>
  <a href="impressum.html">Impressum</a>
  <a href="datenschutz.html">Datenschutz</a>
</nav>
<div class="grid">{grid}</div>
<footer>Jam-Shop · Fiverr: davidhutson2000 · PayPal {esc(PAYPAL_EMAIL)}</footer>
</body></html>"""
