#!/usr/bin/env python3
"""Merge Part A + Part B into final PGS-15 Beleidsdocument."""
import copy, os
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH

BASE = "/root/projects/jg/2026-pgs15-phoenix-metals"
PART_A = f"{BASE}/working/map/doc03_partA.docx"
PART_B = f"{BASE}/working/map/doc03_partB.docx"
OUT    = f"{BASE}/deliverables/docx/PGS15_Beleidsdocument_Policy_v1.0.docx"

os.makedirs(os.path.dirname(OUT), exist_ok=True)

# 1. Load Part A as base
docA = Document(PART_A)
docB = Document(PART_B)

# 2. Page break before Part B content
from docx.oxml import OxmlElement
pb = OxmlElement('w:p')
run = OxmlElement('w:r')
br = OxmlElement('w:br')
br.set(qn('w:type'), 'page')
run.append(br)
pb.append(run)
docA.element.body.append(pb)

# 3. Copy all body elements from Part B (except sectPr)
for element in docB.element.body:
    if element.tag != qn('w:sectPr'):
        docA.element.body.append(copy.deepcopy(element))

# 4. Add headers/footers to ALL sections
for section in docA.sections:
    # Unlink from previous (make unique)
    section.header.is_linked_to_previous = False
    section.footer.is_linked_to_previous = False

    # Header
    hdr = section.header
    hdr.paragraphs[0].clear() if hdr.paragraphs else None
    hp = hdr.paragraphs[0] if hdr.paragraphs else hdr.add_paragraph()
    hp.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    hr = hp.add_run("JvG Consultancy | PGS-15 Beleidsdocument")
    hr.font.name = "Calibri"
    hr.font.size = Pt(9)
    hr.font.color.rgb = RGBColor(0x37, 0x41, 0x51)

    # Footer
    ftr = section.footer
    ftr.paragraphs[0].clear() if ftr.paragraphs else None
    fp = ftr.paragraphs[0] if ftr.paragraphs else ftr.add_paragraph()
    fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
    fr = fp.add_run("© 2026 JvG Consultancy | HSEQ | 26 april 2026 | Vertrouwelijk")
    fr.font.name = "Calibri"
    fr.font.size = Pt(8)
    fr.font.color.rgb = RGBColor(0x37, 0x41, 0x51)

# 5. Save
docA.save(OUT)
print(f"✅ Saved: {OUT}")

# 6. Verify
vdoc = Document(OUT)
words = sum(len(p.text.split()) for p in vdoc.paragraphs)
tables = len(vdoc.tables)
headings = [p.text[:80] for p in vdoc.paragraphs if p.style.name.startswith('Heading')]
sections = len(vdoc.sections)
hdr_ok = all("JvG Consultancy" in (s.header.paragraphs[0].text if s.header.paragraphs else "") for s in vdoc.sections)
ftr_ok = all("Vertrouwelijk" in (s.footer.paragraphs[0].text if s.footer.paragraphs else "") for s in vdoc.sections)

print(f"Words: {words}")
print(f"Tables: {tables}")
print(f"Headings ({len(headings)}):")
for h in headings:
    print(f"  - {h}")
print(f"Sections: {sections}")
print(f"Headers OK: {hdr_ok}")
print(f"Footers OK: {ftr_ok}")
