"""Marketing für KI Web Studio (https://www.ki-web-studio.de/) – Posts, Share-Links, Kalender."""

from __future__ import annotations

import html
import re
import urllib.parse
from datetime import date
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
MARKETING_DIR = ROOT / "data" / "ki-web-studio-marketing"

SITE_URL = "https://www.ki-web-studio.de"
PRICE_REGULAR = 49.99
PRICE_SONDER = 40
EXTRAS_LINE = "Mehr Leistungen (Shop, SEO, Content, Web-Apps) jederzeit nach Absprache möglich."

TAGLINE = (
    f"🔥 Website Sonderangebot: nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} € · Deutschlandweit"
)


def sonderangebot_short() -> str:
    return f"🔥 SONDERANGEBOT: Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €"


def sonderangebot_pitch() -> str:
    return (
        f"{sonderangebot_short()} – responsive, Impressum inkl. "
        f"{EXTRAS_LINE} ki-web-studio.de"
    )


HASHTAGS = "#webdesign #website #sonderangebot #ki #freelancer #webentwicklung #kiwebstudio #deutschland"

DEUTSCHLAND_POSTS: list[tuple[str, str]] = [
    (
        "facebook",
        f"🔥 SONDERANGEBOT deutschlandweit: Professionelle Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €! "
        f"Responsive, Impressum inkl., persönliche Betreuung. Mehr Wünsche? Nach Absprache. KI Web Studio.",
    ),
    (
        "linkedin",
        f"KI Web Studio – Webentwicklung für KMU in ganz Deutschland. "
        f"Sonderangebot: Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €. Erweiterungen nach Absprache.",
    ),
    (
        "x",
        f"🔥 Website {PRICE_SONDER}€ statt {PRICE_REGULAR:.2f}€ · deutschlandweit 🇩🇪 "
        f"Shop, SEO, Apps → nach Absprache. ki-web-studio.de",
    ),
    (
        "whatsapp",
        f"Kennst du jemanden der eine Website braucht? SONDERANGEBOT: nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €! "
        f"ki-web-studio.de – mehr Leistungen nach Absprache 👍",
    ),
    (
        "reddit",
        f"Freelance Webdev DE – SONDERANGEBOT: Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €, Festpreis, Impressum inkl. "
        f"Erweiterungen nach Absprache. ki-web-studio.de",
    ),
]

KLEINANZEIGEN_AD = f"""Titel: 🔥 SONDERANGEBOT – Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €

Sie brauchen eine Website – ohne Agentur-Preise?

🔥 SONDERANGEBOT: Professionelle One-Page nur {PRICE_SONDER} € (statt {PRICE_REGULAR:.2f} €)
✅ Responsive & mobiloptimiert
✅ Impressum, Datenschutz, Cookie-Hinweis
✅ SEO-Grundlagen & Google Maps
✅ Persönliche Betreuung – deutschlandweit
✅ Fertig in Tagen, nicht Wochen

➕ Mehr gewünscht? Shop, SEO, Content, Web-Apps – alles nach Absprache möglich.

Ideal für: Handwerker, Friseure, Bäckereien, Restaurants, Vereine, Selbstständige.

Beispiele ansehen: ki-web-studio.de/beispiele/

KI Web Studio · ki-web-studio.de

Kontakt per Nachricht – unverbindlich."""

BUNDESLAENDER: list[tuple[str, str]] = [
    ("Baden-Württemberg", "Stuttgart"),
    ("Bayern", "München"),
    ("Berlin", "Berlin"),
    ("Brandenburg", "Potsdam"),
    ("Bremen", "Bremen"),
    ("Hamburg", "Hamburg"),
    ("Hessen", "Frankfurt"),
    ("Mecklenburg-Vorpommern", "Rostock"),
    ("Niedersachsen", "Hannover"),
    ("NRW", "Köln"),
    ("Rheinland-Pfalz", "Mainz"),
    ("Saarland", "Saarbrücken"),
    ("Sachsen", "Dresden"),
    ("Sachsen-Anhalt", "Magdeburg"),
    ("Schleswig-Holstein", "Kiel"),
    ("Thüringen", "Erfurt"),
]

BEISPIEL_URLS = {
    "baeckerei": f"{SITE_URL}/beispiele/baeckerei-meyer/",
    "friseur": f"{SITE_URL}/beispiele/friseur-stil/",
    "restaurant": f"{SITE_URL}/beispiele/restaurant-am-markt/",
}


def whatsapp_followup_message(name: str, *, day: int = 3) -> str:
    examples = (
        f"\n\nSo könnte Ihre Seite aussehen:\n"
        f"🥖 Bäckerei: {BEISPIEL_URLS['baeckerei']}\n"
        f"💇 Friseur: {BEISPIEL_URLS['friseur']}\n"
        f"🍽 Restaurant: {BEISPIEL_URLS['restaurant']}"
    )
    if day <= 3:
        return (
            f"Hallo, kurze Nachfrage von David (KI Web Studio) – "
            f"hatten Sie schon Gelegenheit, über eine Website für {name} nachzudenken?\n\n"
            f"{sonderangebot_short()} – unverbindliches Beispiel gern kostenlos."
            f"{examples}\n\n"
            f"ki-web-studio.de"
        )
    return (
        f"Hallo, noch einmal kurz von KI Web Studio: "
        f"das Sonderangebot ({PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €) gilt noch – "
        f"ich kann Ihnen für {name} ein kostenloses Beispiel-Layout zeigen, ohne Verpflichtung."
        f"{examples}\n\n"
        f"Bei Interesse einfach kurz antworten. Viele Grüße, David"
    )


def kleinanzeigen_bundesland(bundesland: str, stadt: str) -> str:
    url = utm_url("kleinanzeigen", medium="classified", campaign=bundesland.lower()[:12])
    return f"""Titel: Website für Ihr Unternehmen in {stadt} – nur {PRICE_SONDER} € 🔥

Professionelle Website für Betriebe in {bundesland} – ohne Agentur-Preise!

🔥 SONDERANGEBOT: One-Page Website nur {PRICE_SONDER} € (statt {PRICE_REGULAR:.2f} €)
✅ Mobiloptimiert · Impressum inkl. · SEO-Grundlagen
✅ Ideal für Handwerk, Gastronomie, Friseure, Bäcker in {stadt} & Umgebung
✅ Beispiele: ki-web-studio.de/beispiele/

{EXTRAS_LINE}

KI Web Studio · deutschlandweit · {url}

Einfach Nachricht schicken – unverbindlich."""


def write_whatsapp_followups(rows: list[dict]) -> Path:
    """rows: name, phone, city, bundesland"""
    from urllib.parse import quote

    lines = [
        "KI WEB STUDIO – WhatsApp Erinnerungen (Nachfassen)",
        f"Stand: {date.today().isoformat()}",
        "",
        "Tag 3 = freundliche Nachfrage · Tag 7 = letzte Erinnerung mit Beispiel-Links",
        "",
    ]
    for i, row in enumerate(rows, 1):
        name = row.get("name", "")
        phone = re.sub(r"\D", "", row.get("phone", ""))
        if phone.startswith("0"):
            phone = "49" + phone[1:]
        for day in (3, 7):
            msg = whatsapp_followup_message(name, day=day)
            wa = f"https://wa.me/{phone}?text={quote(msg)}"
            lines.extend(
                [
                    f"--- [{i}] {name} · {row.get('city', '')} · Tag {day} ---",
                    wa,
                    "",
                    msg,
                    "",
                ]
            )
    out = MARKETING_DIR / "whatsapp-erinnerungen.txt"
    MARKETING_DIR.mkdir(parents=True, exist_ok=True)
    out.write_text("\n".join(lines), encoding="utf-8")
    return out


def write_kleinanzeigen_bundeslaender() -> Path:
    lines = [
        f"KI WEB STUDIO – Kleinanzeigen pro Bundesland {date.today().isoformat()}",
        "Kostenlos auf kleinanzeigen.de einstellen – Text kopieren, Stadt wählen.",
        "",
    ]
    for bl, stadt in BUNDESLAENDER:
        lines.extend([f"{'=' * 60}", f"## {bl} (z. B. {stadt})", "", kleinanzeigen_bundesland(bl, stadt), ""])
    out = MARKETING_DIR / "kleinanzeigen-bundeslaender.txt"
    out.write_text("\n".join(lines), encoding="utf-8")
    return out


GOOGLE_ADS_SNIPPETS = [
    f"Website {PRICE_SONDER}€ Sonderangebot | KI Web Studio",
    f"Statt {PRICE_REGULAR:.2f}€ nur {PRICE_SONDER}€ – Homepage Festpreis, Impressum inkl.",
    "Webdesign ohne Agentur – Erweiterungen nach Absprache",
]

SOCIAL_POSTS: list[tuple[str, str]] = [
    (
        "facebook",
        f"🔥 SONDERANGEBOT: Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} € – responsive, Impressum inkl. "
        f"Mehr Wünsche nach Absprache. KI Web Studio.",
    ),
    (
        "instagram",
        f"🔥 SONDERANGEBOT\n"
        f"Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €\n"
        f"Shop · SEO · Content → nach Absprache\n"
        f"ki-web-studio.de",
    ),
    (
        "linkedin",
        f"KI Web Studio – Sonderangebot: Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €. "
        f"DSGVO-konform, direkter Kontakt. Erweiterungen nach Absprache.",
    ),
    (
        "x",
        f"🔥 Website {PRICE_SONDER}€ statt {PRICE_REGULAR:.2f}€ · Shop, Apps, SEO nach Absprache. "
        f"KI Web Studio 🇩🇪 ki-web-studio.de",
    ),
    (
        "whatsapp",
        f"Hey! Website SONDERANGEBOT: nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €! "
        f"ki-web-studio.de – mehr Leistungen jederzeit nach Absprache 👍",
    ),
    (
        "reddit",
        f"Freelance Webdev (DE) – SONDERANGEBOT {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €, Impressum inkl. "
        f"Shops & Apps nach Absprache. ki-web-studio.de",
    ),
    (
        "pinterest",
        f"🔥 Website Sonderangebot {PRICE_SONDER} € – responsive, SEO, Impressum inkl. KI Web Studio.",
    ),
    (
        "telegram",
        f"🔥 KI Web Studio – Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €. Mehr nach Absprache. ki-web-studio.de",
    ),
    (
        "bluesky",
        f"🔥 Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} € – KI Web Studio, persönliche Betreuung. ki-web-studio.de",
    ),
    (
        "mastodon",
        f"Sonderangebot: Website {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} €. Erweiterungen nach Absprache. ki-web-studio.de",
    ),
]

TIKTOK_SCRIPTS = [
    f"POV: Professionelle Website nur {PRICE_SONDER} € statt {PRICE_REGULAR:.2f} € – ki-web-studio.de",
    f"Handwerker? Café? SONDERANGEBOT {PRICE_SONDER} € – Impressum inkl. Mehr nach Absprache.",
    f"Websites, Shops, Apps – alles aus einer Hand. Sonderpreis {PRICE_SONDER} €. ki-web-studio.de",
    f"Content für TikTok & Instagram? Website ab {PRICE_SONDER} € – Erweiterungen nach Absprache.",
]

PLATFORMS_ROTATION = [
    "facebook",
    "instagram",
    "linkedin",
    "x",
    "whatsapp",
    "reddit",
    "pinterest",
    "telegram",
]


def utm_url(platform: str, *, medium: str = "social", campaign: str = "ki_studio", day: int | None = None) -> str:
    params: dict[str, str] = {
        "utm_source": platform,
        "utm_medium": medium,
        "utm_campaign": campaign,
    }
    if day is not None:
        params["utm_content"] = f"day{day}"
    return f"{SITE_URL}/?{urllib.parse.urlencode(params)}"


def share_urls(text: str, url: str) -> dict[str, str]:
    enc_url = urllib.parse.quote(url, safe="")
    enc_text = urllib.parse.quote(text, safe="")
    full = urllib.parse.quote(f"{text}\n{url}", safe="")
    return {
        "x": f"https://twitter.com/intent/tweet?text={enc_text}&url={enc_url}",
        "facebook": f"https://www.facebook.com/sharer/sharer.php?u={enc_url}",
        "whatsapp": f"https://wa.me/?text={full}",
        "telegram": f"https://t.me/share/url?url={enc_url}&text={enc_text}",
        "linkedin": f"https://www.linkedin.com/sharing/share-offsite/?url={enc_url}",
        "reddit": f"https://www.reddit.com/submit?url={enc_url}&title={enc_text}",
        "pinterest": f"https://pinterest.com/pin/create/button/?url={enc_url}&description={enc_text}",
        "bluesky": f"https://bsky.app/intent/compose?text={full}",
        "mastodon": f"https://mastodon.social/share?text={full}",
        "email": f"mailto:?subject={urllib.parse.quote(f'KI Web Studio – Website Sonderangebot {PRICE_SONDER} €')}&body={full}",
    }


def pick_post(*, seed: int | None = None) -> tuple[str, str, str]:
    idx = (seed if seed is not None else date.today().toordinal()) % len(SOCIAL_POSTS)
    platform, body = SOCIAL_POSTS[idx]
    url = utm_url(platform, day=date.today().day)
    return platform, body, url


def pick_tiktok_script() -> str:
    idx = date.today().toordinal() % len(TIKTOK_SCRIPTS)
    return f"{TIKTOK_SCRIPTS[idx]}\n\n{utm_url('tiktok', medium='video', day=date.today().day)}\n{HASHTAGS}"


def generate_calendar(days: int = 30) -> list[str]:
    lines: list[str] = []
    start = date.today()
    for i in range(days):
        d = date.fromordinal(start.toordinal() + i)
        idx = (d.toordinal()) % len(SOCIAL_POSTS)
        platform, body = SOCIAL_POSTS[idx]
        url = utm_url(platform, day=d.day)
        lines.append(f"=== {d.isoformat()} ({d.strftime('%A')}) ===")
        lines.append(f"Kanal: {platform.upper()}")
        lines.append(f"Post: {body}")
        lines.append(f"Link: {url}")
        lines.append(f"TikTok-Idee: {TIKTOK_SCRIPTS[idx % len(TIKTOK_SCRIPTS)][:120]}…")
        lines.append("")
    return lines


def write_marketing_bundle() -> Path:
    MARKETING_DIR.mkdir(parents=True, exist_ok=True)
    platform, body, url = pick_post()
    post_text = f"{body}\n{url}"
    shares = share_urls(body, url)
    lines = [
        f"KI WEB STUDIO – Werbung {date.today().isoformat()}",
        TAGLINE,
        "",
        f"HEUTE ({platform.upper()}):",
        post_text,
        "",
        "SHARE-LINKS:",
    ]
    for key, link in shares.items():
        lines.append(f"  {key}: {link}")
    lines.extend(["", "TIKTOK/REELS:", pick_tiktok_script(), ""])
    out = MARKETING_DIR / "heute.txt"
    out.write_text("\n".join(lines), encoding="utf-8")
    cal = MARKETING_DIR / "kalender-30-tage.txt"
    cal.write_text("\n".join(generate_calendar(30)), encoding="utf-8")
    _write_deutschland_werbung()
    _write_sonderangebot()
    return out


def _write_sonderangebot() -> Path:
    """Sonderangebot-Post zum sofortigen Teilen."""
    body = sonderangebot_pitch()
    url = utm_url("sonderangebot", medium="social", campaign="40euro")
    shares = share_urls(body, url)
    lines = [
        f"KI WEB STUDIO – SONDERANGEBOT {date.today().isoformat()}",
        "",
        sonderangebot_short(),
        f"Regulär: {PRICE_REGULAR:.2f} € → Jetzt nur {PRICE_SONDER} €",
        EXTRAS_LINE,
        "",
        "=== COPY & POSTEN ===",
        f"{body}",
        url,
        "",
        "=== SHARE-LINKS ===",
    ]
    for key, link in shares.items():
        lines.append(f"  {key}: {link}")
    out = MARKETING_DIR / "sonderangebot.txt"
    out.write_text("\n".join(lines), encoding="utf-8")
    return out


def _write_deutschland_werbung() -> Path:
    """Kleinanzeigen, Deutschland-Posts, Google-Snippets."""
    lines = [
        f"KI WEB STUDIO – Deutschland-Werbung {date.today().isoformat()}",
        SITE_URL,
        "",
        "=== KLEINANZEIGEN.DE (Anzeige kopieren & in mehreren Städten schalten) ===",
        KLEINANZEIGEN_AD,
        "",
        "Städte-Vorschlag: Berlin, München, Hamburg, Köln, Frankfurt, Stuttgart, Leipzig, Nürnberg, Hannover, Dresden",
        f"Link mit Tracking: {utm_url('kleinanzeigen', medium='classified', campaign='deutschland')}",
        "",
        "=== DEUTSCHLAND SOCIAL POSTS ===",
    ]
    for platform, body in DEUTSCHLAND_POSTS:
        url = utm_url(platform, campaign="deutschland", day=date.today().day)
        lines.extend([f"[{platform.upper()}]", body, url, ""])
    lines.append("=== GOOGLE ADS ÜBERSCHRIFTEN ===")
    for s in GOOGLE_ADS_SNIPPETS:
        lines.append(f"  · {s}")
    lines.append("")
    lines.append(f"Landing: {utm_url('google', medium='cpc', campaign='deutschland')}")
    out = MARKETING_DIR / "deutschland-werbung.txt"
    out.write_text("\n".join(lines), encoding="utf-8")
    return out


def werben_page_html() -> str:
    platform, body, url = pick_post()
    shares = share_urls(body, url)
    btns = "\n".join(
        f'<a class="btn btn-{k}" href="{html.escape(v)}" target="_blank" rel="noopener">{k.upper()}</a>'
        for k, v in shares.items()
        if k != "email"
    )
    return f"""<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="utf-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
  <title>KI Web Studio – Werben & teilen</title>
  <style>
    body {{ font-family:Segoe UI,sans-serif; background:#0f172a; color:#e2e8f0; max-width:640px; margin:2rem auto; padding:1rem; }}
    h1 {{ color:#38bdf8; }}
    pre {{ background:#1e293b; padding:1rem; border-radius:8px; white-space:pre-wrap; }}
    .btn {{ display:inline-block; margin:0.3rem; padding:0.5rem 0.9rem; background:#334155; color:#fff; text-decoration:none; border-radius:8px; font-size:0.85rem; }}
    .btn-whatsapp {{ background:#25d366; }}
    .btn-linkedin {{ background:#0a66c2; }}
  </style>
</head>
<body>
  <h1>KI Web Studio teilen</h1>
  <p>{html.escape(TAGLINE)}</p>
  <pre id="copy">{html.escape(body + chr(10) + url)}</pre>
  <p>{btns}</p>
  <p><a href="{SITE_URL}/" style="color:#38bdf8">→ ki-web-studio.de</a></p>
</body>
</html>"""
