# Plan: Blokken Kopiëren Functionaliteit ## 📋 Overzicht Implementatie van een functie om blokken (inclusief transmissions en bloktijden) te kopiëren van andere dagen naar de huidige dag in de Excel Planner view. ## 🎯 Functionaliteit Vereisten ### Wat wordt gekopieerd? - **Transmissions**: Alle uitzendingen binnen een specifiek blok - **Bloktijden**: De `actual_start_time` en `actual_end_time` van het bronblok ### Gebruikersflow 1. Gebruiker opent Excel Planner ([`planner.php`](planner.php)) 2. Gebruiker klikt op "Kopieer Blok" knop bij een specifiek blok 3. Modal opent met: - Selectie van **brondag** (datepicker) - Selectie van **bronblok** (dropdown, gefilterd op zelfde zender en template) 4. Gebruiker bevestigt kopieeractie 5. Systeem: - Verwijdert alle bestaande transmissions in het doelblok - Kopieert bloktijden van bronblok naar doelblok - Kopieert alle transmissions van bronblok naar doelblok - Past `start_date` aan naar doeldag - Zet `api_status` op 'pending' (moet opnieuw gesynchroniseerd worden) 6. Pagina herlaadt met gekopieerde data ## 🏗️ Architectuur ### Database Schema Bestaande tabellen die gebruikt worden: **`daily_blocks`** ```sql - id (primary key) - template_id (foreign key naar block_templates) - channel (VARCHAR) - block_date (DATE) - actual_start_time (TIME) - actual_end_time (TIME) ``` **`transmissions`** ```sql - id (primary key) - infomercial_id (foreign key) - channel (VARCHAR) - template (VARCHAR) - start_date (DATE) - start_time (TIME) - duration (TIME) - api_status (ENUM: pending, synced, error) - talpa_transmission_id (INT, nullable) ``` ### Dataflow Diagram ```mermaid graph TD A[Gebruiker klikt Kopieer Blok] --> B[Modal opent] B --> C[Selecteer Brondag] C --> D[Selecteer Bronblok] D --> E[Bevestig Kopiëren] E --> F[API: copy_block.php] F --> G{Validatie} G -->|Invalid| H[Toon Foutmelding] G -->|Valid| I[Start Database Transactie] I --> J[Verwijder Bestaande Transmissions] J --> K[Update Bloktijden] K --> L[Kopieer Transmissions] L --> M[Commit Transactie] M --> N[Return Success] N --> O[Herlaad Pagina] ``` ## 🔧 Implementatie Details ### 1. Frontend UI (planner.php) #### Nieuwe Knop in Block Header Locatie: In de block header, naast de bestaande "Sync naar Talpa" knop ```html ``` #### Modal voor Blok Kopiëren ```html
Starttijd: ${data.block.actual_start_time.substring(0,5)}
Eindtijd: ${data.block.actual_end_time ? data.block.actual_end_time.substring(0,5) : '∞'}
Aantal uitzendingen: ${data.transmissions.length}
`; if (data.transmissions.length > 0) { html += 'Uitzendingen: