#!/usr/bin/env python3
"""Social Media Posts Kabinetswissel 110AN — v1.0
Generates a DOCX with Instagram, Facebook and LinkedIn posts."""

import os
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml

OUT_DIR = os.path.dirname(os.path.abspath(__file__))
OUT_FILE = os.path.join(OUT_DIR, "social-media-kabinetswissel-110AN_v1.0.docx")

NAVY = RGBColor(0x00, 0x33, 0x66)
GOLD = RGBColor(0xF5, 0x9E, 0x0B)
GREEN = RGBColor(0x00, 0xA8, 0x59)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GRAY = RGBColor(0x66, 0x66, 0x66)

def set_run_font(run, name="Calibri", size=11, color=None, bold=False, italic=False):
    run.font.name = name
    run.font.size = Pt(size)
    if color:
        run.font.color.rgb = color
    run.bold = bold
    run.italic = italic
    rpr = run._element.get_or_add_rPr()
    from docx.oxml.ns import qn
    rFonts = rpr.find(qn('w:rFonts'))
    if rFonts is None:
        rFonts = parse_xml(f'<w:rFonts {nsdecls("w")} w:ascii="{name}" w:hAnsi="{name}"/>')
        rpr.insert(0, rFonts)

def add_platform_header(doc, platform, icon, color):
    """Add a colored platform header."""
    banner = doc.add_table(rows=1, cols=1)
    banner.alignment = WD_ALIGN_PARAGRAPH.CENTER
    cell = banner.cell(0, 0)
    shading = parse_xml(f'<w:shd {nsdecls("w")} w:fill="{color}"/>')
    cell._tc.get_or_add_tcPr().append(shading)
    p = cell.paragraphs[0]
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.paragraph_format.space_before = Pt(10)
    p.paragraph_format.space_after = Pt(10)
    run = p.add_run(f"{icon}  {platform}")
    set_run_font(run, "Calibri", 14, WHITE, bold=True)

def add_post_section(doc, post_title):
    """Add a post title."""
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(14)
    p.paragraph_format.space_after = Pt(6)
    run = p.add_run(post_title)
    set_run_font(run, "Calibri", 12, NAVY, bold=True)

def add_label(doc, label):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(6)
    p.paragraph_format.space_after = Pt(2)
    run = p.add_run(label)
    set_run_font(run, "Calibri", 10, GOLD, bold=True)

def add_body(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_after = Pt(6)
    run = p.add_run(text)
    set_run_font(run, "Calibri", 11)

def add_visual(doc, text):
    p = doc.add_paragraph()
    p.paragraph_format.space_after = Pt(4)
    run = p.add_run(text)
    set_run_font(run, "Calibri", 10, GRAY, italic=True)

def main():
    try:
        doc = Document()
        for section in doc.sections:
            section.top_margin = Cm(2)
            section.bottom_margin = Cm(2)
            section.left_margin = Cm(2.5)
            section.right_margin = Cm(2.5)

        # ── Title ──
        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        p.paragraph_format.space_before = Pt(10)
        p.paragraph_format.space_after = Pt(4)
        run = p.add_run("SOCIAL MEDIA CONTENT")
        set_run_font(run, "Calibri", 18, NAVY, bold=True)

        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        p.paragraph_format.space_after = Pt(4)
        run = p.add_run("Kabinetswissel District 110AN — 15 augustus 2026")
        set_run_font(run, "Calibri", 12, NAVY)

        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        p.paragraph_format.space_after = Pt(12)
        run = p.add_run('"Samen Verder Bouwen"')
        set_run_font(run, "Calibri", 12, GOLD, bold=True, italic=True)

        # ══════════════════════════════════════════════════════════════
        # INSTAGRAM
        # ══════════════════════════════════════════════════════════════
        add_platform_header(doc, "INSTAGRAM", "📸", "E1306C")

        # Post 1 — Save the Date
        add_post_section(doc, "Post 1: Save the Date (vooraf — juli 2026)")
        add_label(doc, "Caption:")
        add_body(doc,
            " lions110an\n"
            "SAVE THE DATE 🗓\n\n"
            "Zaterdag 15 augustus 2026\n"
            "Papa's Beach House, Haarlemmermeerse Bos\n\n"
            "Het nieuwe kabinet van District 110AN gaat van start! 🦁\n"
            "Samen Verder Bouwen — 75 jaar Lions — Alzheimer NL\n\n"
            "Meer info volgt. Houd deze pagina in de gaten!"
        )
        add_label(doc, "Hashtags:")
        add_body(doc, "#Lions110AN #SamenVerderBouwen #LionsNederland #Lions75 #SaveTheDate #District110AN #LionsClub #Dienstbaarheid #AlzheimerNederland")
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Achtergrondfoto Papa's Beach House (aerial shot of beach setting). Over de afbeelding: "
            "datum, locatie en 'Samen Verder Bouwen' in Lions-kleuren (navy + gold). "
            "Formaat: 1080x1080 (square) of 1080x1350 (portrait). Branding: Lions-logo linksboven.")

        # Post 2 — Terugblik
        add_post_section(doc, "Post 2: Terugblik (na de dag — 16 augustus 2026)")
        add_label(doc, "Caption:")
        add_body(doc,
            " lions110an\n"
            "WAT EEN DAG! 🙌\n\n"
            "Gisteren kwam het nieuwe kabinet van District 110AN bijeen bij Papa's Beach House. "
            "75 jaar Lions, Alzheimer NL als goed doel en een krachtige visie voor het komende jaar.\n\n"
            "Samen Verder Bouwen begint hier. 🦁💙\n\n"
            "Bedankt aan iedereen die erbij was!"
        )
        add_label(doc, "Hashtags:")
        add_body(doc, "#Lions110AN #SamenVerderBouwen #Kabinetswissel #LionsNederland #Lions75 #PapasBeachHouse #TeamLions #District110AN #AlzheimerNederland")
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Groepsfoto van het kabinet op het strand/terras van Papa's Beach House. "
            "Alternatief: carousel (swipe) met 4-5 momenten: ontvangst, presentatie, lunch, teambuilding, borrel. "
            "Formaat: 1080x1080 of 1080x1350. Kleurfilter: warm, zomers, consistent Lions-branding.")

        # ══════════════════════════════════════════════════════════════
        # FACEBOOK
        # ══════════════════════════════════════════════════════════════
        add_platform_header(doc, "FACEBOOK", "👤", "1877F2")

        # Post 1 — Uitnodiging
        add_post_section(doc, "Post 1: Uitnodiging / Aankondiging (juli 2026)")
        add_label(doc, "Bericht:")
        add_body(doc,
            "Lions District 110AN — Uitnodiging Kabinetswissel\n\n"
            "Beste leden en vrienden van District 110AN,\n\n"
            "Op zaterdag 15 augustus 2026 start het nieuwe Lionsjaar met de kabinetswissel bij "
            "Papa's Beach House in het Haarlemmermeerse Bos, Hoofddorp.\n\n"
            "Programma highlights:\n"
            "• 75 jaar Lions Nederland — presentatie IPDG Pieter Haex\n"
            "• Stichting Alzheimer Nederland — onze goede doelen-samenwerking\n"
            "• 'Samen Verder Bouwen' — visie DG Jorick van Gemert\n"
            "• Interactieve sessies, teambuilding en gezellige borrel\n\n"
            "Datum: zaterdag 15 augustus 2026\n"
            "Locatie: Papa's Beach House, Haarlemmermeerse Bos, Hoofddorp\n"
            "Dresscode: Smart Casual / Summer\n"
            "Parkeren: gratis ter plaatse\n\n"
            "Bevestig vóór 1 augustus via secretaris@lions110an.nl\n\n"
            "We kijken ernaar uit u te verwelkomen! 🦁"
        )
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Evenementbanner: foto Papa's Beach House met overlay. Tekst: datum, locatie, "
            "'Kabinetswissel 110AN', 'Samen Verder Bouwen'. Lions-logo prominent. "
            "Formaat: 1200x630 (landscape). Kleuren: navy achtergrond, gold tekst, white details.")

        # Post 2 — Aftermovie / foto's
        add_post_section(doc, "Post 2: Aftermovie / Foto's (na de dag)")
        add_label(doc, "Bericht:")
        add_body(doc,
            "Terugblik: Kabinetswissel District 110AN 🦁\n\n"
            "Wat een fantastische dag was het gisteren bij Papa's Beach House! "
            "Het nieuwe kabinet is officieel van start gegaan.\n\n"
            "Bekijk de foto's van deze bijzondere dag en herbeleef de momenten.\n\n"
            "Dank aan alle aanwezigen, organisatoren en sprekers. "
            "Samen Verder Bouwen — daar gaan we voor! 💪\n\n"
            "[Link naar foto-album / aftermovie]"
        )
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Foto-album (10-15 foto's) of korte aftermovie (60-90 seconden). "
            "Openingsbeeld: groepsfoto kabinet. Volgende shots: presentaties, interactie, borrel, beach setting. "
            "Muziek: inspirerend, uptempo. Lions-logo als watermark.")

        # ══════════════════════════════════════════════════════════════
        # LINKEDIN
        # ══════════════════════════════════════════════════════════════
        add_platform_header(doc, "LINKEDIN", "💼", "0A66C2")

        # Post 1 — Nieuw kabinet
        add_post_section(doc, "Post 1: Nieuw kabinet & Samen Verder Bouwen (augustus 2026)")
        add_label(doc, "Bericht:")
        add_body(doc,
            "Vandaag start het nieuwe kabinet van Lions District 110AN.\n\n"
            "Bij Papa's Beach House in Hoofddorp kwam het voltallige team bijeen voor de "
            "kabinetswissel 2026-2027. Onder leiding van Districtsgouverneur Jorick van Gemert "
            "zetten we de koers uit voor het komende Lionsjaar.\n\n"
            "Drie pijlers staan centraal:\n"
            "🦁 75 jaar Lions Nederland — een lustrumjaar dat er toe doet\n"
            "🧠 Stichting Alzheimer Nederland — €40.000 doel voor Voetbalherinneringen en Dementievriendelijke Ruimten\n"
            "🏗 Samen Verder Bouwen — sterke clubs, meer impact, innovatieve organisatie\n\n"
            "Leadership in service betekent: luisteren, verbinden en bouwen. "
            "Met een team van 20+ kabinetsleden, zonevoorzitters en commissarissen "
            "zijn we klaar om het verschil te maken.\n\n"
            "Samen Verder Bouwen. Niet alleen als thema — als belofte.\n\n"
            "#LionsInternational #Lions110AN #Leadership #Service #SamenVerderBouwen #AlzheimerNederland #Lions75"
        )
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Professionele groepsfoto (portretmodus, good lighting). Kabinet in semi-cirkel, "
            "DG centraal. Achtergrond: beach setting of natuur. Alternatief: sfeerbeeld locatie met tekstoverlay. "
            "Formaat: 1200x627. Kleurpalet: navy, gold, wit. Geen filters — professioneel en clean.")

        # Post 2 — Reflectie + bedankt
        add_post_section(doc, "Post 2: Reflectie & Bedankt (een week na de dag)")
        add_label(doc, "Bericht:")
        add_body(doc,
            "Een week geleden stonden we met z'n allen bij Papa's Beach House. "
            "Vandaag kijk ik terug met trots en dankbaarheid.\n\n"
            "Wat maakte deze kabinetswissel bijzonder?\n\n"
            "✅ De energie van een nieuw team dat er klaar voor is\n"
            "✅ De historie van 75 jaar Lions die ons inspireert\n"
            "✅ De samenwerking met Alzheimer Nederland die ons doel geeft\n"
            "✅ De visie van 'Samen Verder Bouwen' die richting biedt\n\n"
            "Mijn dank gaat uit naar het entire organisatieteam, de sprekers, "
            "en natuurlijk elk kabinetslid dat deze dag mogelijk maakte.\n\n"
            "Het werk begint nu. Club voor club, project voor project, "
            "mens voor mens. Dat is wat Lions doen.\n\n"
            "Jorick van Gemert\nDistrictsgouverneur 110AN\n\n"
            "#Lions110AN #SamenVerderBouwen #Leadership #Gratitude #Service #LionsNederland"
        )
        add_label(doc, "Visuele suggestie:")
        add_visual(doc, "Candid moment: DG sprekend, of informeel moment tijdens borrel/teambuilding. "
            "Alternatief: foto van het kabinet in actie (werkende sessie, niet pose). "
            "Formaat: 1200x627. Toon: authentiek, warm, professioneel. "
            "Geen stockfoto's — echte momenten van de dag.")

        # ── Footer ──
        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        p.paragraph_format.space_before = Pt(24)
        run = p.add_run("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
        set_run_font(run, "Calibri", 10, GOLD)

        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = p.add_run("Lions Clubs District 110AN — Communicatiepakket Kabinetswissel 2026")
        set_run_font(run, "Calibri", 9, GRAY)

        doc.save(OUT_FILE)
        print(f"✅ Social media posts opgeslagen: {OUT_FILE}")
        return True

    except Exception as e:
        print(f"❌ Fout bij genereren social media posts: {e}")
        return False

if __name__ == "__main__":
    main()
