from __future__ import annotations

from src.errors import UserError


def generate_post_text(*, title: str, venue: str, place: str) -> str:
    title_clean = _clean_token(title)
    venue_clean = _clean_token(venue)
    place_clean = _clean_token(place)
    if not title_clean:
        raise UserError("Missing deal title for GBP post text.")
    if not venue_clean:
        raise UserError("Missing venue name for GBP post text.")
    if not place_clean:
        raise UserError("Missing place for GBP post text.")

    text = (
        f"Foto's van {title_clean} bij {venue_clean} in {place_clean}. "
        "Bekijk de selectie en download je favorieten via onze website. "
        "Bedankt voor jullie komst, en tot bij een volgend event! "
        "Wil je ook professionele eventfoto's? Stuur ons een bericht voor beschikbaarheid en tarieven."
    )
    return _normalize_whitespace(text)


def _clean_token(value: str) -> str:
    return str(value or "").strip()


def _normalize_whitespace(text: str) -> str:
    return " ".join(str(text).split())
