#!/usr/bin/env python3
"""
Speciaal script om T20 Arbowetgeving presentatie compleet te maken (35 slides)
"""

import os
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor

# JvG branding kleuren
JVG_BLUE = RGBColor(0, 51, 102)  # #003366
JVG_TEXT = RGBColor(31, 41, 55)   # #1F2937

# Phoenix Metals specifieke context
PHOENIX_CONTEXT = 'proeffabriek vanadium/staalslakkenverwerking'

def add_t20_slides():
    """Voeg ontbrekende slides toe aan T20"""
    file_path = "/root/projects/jg/2026-PM-eLearning/deliverables/PM_EL_T20_Arbowetgeving_Presentatie_v1.1.pptx"
    
    print(f"Uitbreiden van T20 presentatie...")
    
    # Laad bestaande presentatie
    prs = Presentation(file_path)
    current_slides = len(prs.slides)
    print(f"Huidige aantal slides: {current_slides}")
    
    # Definieer extra slides voor T20 Arbowetgeving
    extra_slides = [
        {
            'type': 'CONCEPT',
            'title': 'Arbeidstijd',
            'content': 'Arbeidstijd reglementering: maximale werktijden, rusttijden, pauzes en nachtwerk.'
        },
        {
            'type': 'UITLEG',
            'title': 'Vergunningen certificering',
            'content': 'Vereisten voor gevaarlijke werkzaamheden: hotwork, werken op hoogte, besloten ruimten.'
        },
        {
            'type': 'VOORBEELD',
            'title': 'Phoenix Metals implementatie',
            'content': 'Implementatie van Arbo-eisen: VOP training, risico-inventarisatie, PBM procedures.'
        },
        {
            'type': 'VALKUIL',
            'title': 'Arbo fouten',
            'content': [
                'Onderschatting van risico\'s bij gevaarlijke stoffen',
                'Niet nakomen van meldplicht bij ongevallen',
                'Gebrek aan adequate opleiding en instructies'
            ]
        },
        {
            'type': 'SAMENVATTING',
            'title': 'Arbo compliance',
            'content': [
                'Houd documentatie bij en up-to-date',
                'Geef adequate training en instructies',
                'Monitor naleving en evalueer continu'
            ]
        },
        {
            'type': 'DISCUSSIE',
            'title': 'Arbo verantwoordelijkheid',
            'content': [
                'Hoe verdeelen we Arbo verantwoordelijkheden?',
                'Wat doen we bij een Arbo overtreding?',
                'Hoe verbeteren we onze Arbo cultuur?'
            ]
        }
    ]
    
    # Voeg slides toe
    for slide_info in extra_slides:
        slide_layout = prs.slide_layouts[1]  # Content slide
        slide = prs.slides.add_slide(slide_layout)
        
        # Titel instellen met JvG branding
        if slide.shapes.title:
            title_text = f"{slide_info['type']}: {slide_info['title']}"
            slide.shapes.title.text = title_text
            slide.shapes.title.text_frame.paragraphs[0].font.color.rgb = JVG_BLUE
            slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(32)
            slide.shapes.title.text_frame.paragraphs[0].font.bold = True
        
        # Content toevoegen
        if slide.placeholders:
            body = slide.placeholders[1]
            
            if slide_info['type'] == 'VALKUIL' or slide_info['type'] == 'SAMENVATTING':
                # Lijst format
                for i, item in enumerate(slide_info['content'], 1):
                    p = body.text_frame.add_paragraph()
                    p.text = f"{i}. {item}"
                    p.font.color.rgb = JVG_TEXT
                    p.font.size = Pt(24)
                    p.level = 0
            elif slide_info['type'] == 'DISCUSSIE':
                # Vragen format
                p = body.text_frame.add_paragraph()
                p.text = "Denk na en bespreek de volgende vragen:"
                p.font.color.rgb = JVG_TEXT
                p.font.size = Pt(24)
                p.level = 0
                
                for question in slide_info['content']:
                    p2 = body.text_frame.add_paragraph()
                    p2.text = f"❓ {question}"
                    p2.font.color.rgb = JVG_TEXT
                    p2.font.size = Pt(20)
                    p2.level = 1
            else:
                # Normale tekst
                p = body.text_frame.add_paragraph()
                p.text = slide_info['content']
                p.font.color.rgb = JVG_TEXT
                p.font.size = Pt(24)
                p.level = 0
                
                # Voeg Phoenix Metals context toe
                p2 = body.text_frame.add_paragraph()
                p2.text = f"🏭 Toepassing bij {PHOENIX_CONTEXT}: essentieel voor veilige werkomstandigheden bij verwerking van V₂O₅, H₂SO₄ en NaOH."
                p2.font.color.rgb = JVG_TEXT
                p2.font.size = Pt(20)
                p2.level = 1
    
    # Sla de bijgewerkte presentatie op
    prs.save(file_path)
    
    final_slides = len(prs.slides)
    print(f"Voltooid: {final_slides} slides ({final_slides - current_slides} slides toegevoegd)")
    
    return final_slides

def main():
    """Hoofd functie"""
    print("=== Voltooien T20 Arbowetgeving Presentatie ===\n")
    
    final_slides = add_t20_slides()
    
    print(f"\nResultaat: T20 heeft nu {final_slides} slides")
    if final_slides >= 35:
        print("✅ Presentatie voldoet nu aan minimum eis!")
    else:
        print(f"❌ Nog steeds {35 - final_slides} slides tekort")

if __name__ == "__main__":
    main()