# Level X permanentie-app - PHP/MySQL-koppeling

Deze versie bevat een eerste PHP/MySQL-backend voor de Untis-import, afwezigheden en planning-items.

## Wat is toegevoegd

- `api/config.php` - databaseconfiguratie voor OVH
- `api/install.php` - maakt de nodige MySQL-tabellen aan
- `api/import-untis.php` - verwerkt een Untis XML-upload naar MySQL
- `api/teachers-list.php` - haalt personeelsleden uit de actieve Untis-import
- `api/absences-create.php` - slaat een afwezigheid op en maakt automatisch planning-items
- `api/planning-list.php` - haalt planning-items per datum op
- `api/planning-update.php` - bewaart een oplossing/status voor een planning-item
- `api/status.php` - controleert databaseverbinding en actieve import
- `js/api-service.js` - frontend-service voor de PHP API

## Eerste installatie op OVH

1. Upload de volledige map naar je PHP-hosting.
2. Open één keer in je browser:
   `/api/install.php`
3. Je zou JSON moeten zien met:
   `{"ok":true,"message":"Database-tabellen zijn klaar."}`
4. Ga naar `beheercentrum.html`.
5. Upload de Untis XML via de Untis-exportkaart.
6. Controleer via:
   `/api/status.php`

## Flow die nu al werkt

1. Beheercentrum uploadt Untis XML naar PHP.
2. PHP parsed het XML-bestand.
3. De database krijgt leerkrachten, klassen, lokalen, vakken en roosterblokken.
4. De actieve import wordt bewaard in `untis_imports`.
5. Afwezighedenpagina laadt personeelsleden uit de actieve Untis-import.
6. Bij het opslaan van een afwezigheid maakt PHP automatisch planning-items aan op basis van het rooster.

## Belangrijk

- `api/install.php` is handig tijdens ontwikkeling. Verwijder of bescherm dit bestand zodra de app publiek staat.
- `api/config.php` bevat servergegevens. Zet dit bestand nooit in een publieke GitHub-repository.
- De planningpagina heeft al API-service beschikbaar, maar de volledige visuele vervanging van demo-planning door databaseplanning is de volgende stap.

## Fix 2026-05-19: duplicate entry bij Untis-import

Deze versie bevat een correctie voor Untis XML-bestanden waarin dezelfde klas- of vak-ID meer dan één keer voorkomt. De import filtert dubbele stamkaarten nu weg voordat ze naar MySQL geschreven worden.

Daarnaast krijgt elke roosterregel nu een import-unieke sleutel. Daardoor kan hetzelfde Untis-bestand later opnieuw geïmporteerd worden zonder te botsen op bestaande roosterregels uit een vorige import.

Na upload van deze versie:

1. Open opnieuw `api/install.php`.
2. Ga naar `beheercentrum.html`.
3. Upload het Untis XML-bestand opnieuw.
4. Controleer `api/status.php`.

Als er nog een foutmelding komt, kopieer dan de volledige JSON-respons met `details` en `hint`.
