-- ==============================================
-- Script de vérification d'intégrité des données
-- ==============================================

-- 1) Vérifier unicité des emails
SELECT email, COUNT(*) AS doublons
FROM utilisateurs
GROUP BY email
HAVING COUNT(*) > 1;

-- 2) Vérifier utilisateurs sans rôle
SELECT id, email
FROM utilisateurs
WHERE role IS NULL OR role = '';

-- 3) Vérifier cohérence enfants → parents
SELECT e.id AS enfant_id, e.nom, e.prenom
FROM enfants e
LEFT JOIN enfants_parents ep ON e.id = ep.enfant_id
WHERE ep.parent_id IS NULL;

-- 4) Vérifier cohérence enfants_parents → parents existants
SELECT ep.enfant_id, ep.parent_id
FROM enfants_parents ep
LEFT JOIN parents p ON ep.parent_id = p.id
WHERE p.id IS NULL;

-- 5) Vérifier cohérence dossiers → utilisateurs
SELECT d.id, d.parent_id
FROM dossiers d
LEFT JOIN parents p ON d.parent_id = p.id
WHERE p.id IS NULL;

-- 6) Vérifier cohérence contrats → utilisateurs et assistantes
SELECT c.id, c.parent_id, c.assistante_id
FROM contrats c
LEFT JOIN parents p ON c.parent_id = p.id
LEFT JOIN assistantes_maternelles am ON c.assistante_id = am.id
WHERE p.id IS NULL OR am.id IS NULL;

-- 7) Vérifier cohérence validations → utilisateurs
SELECT v.id, v.valide_par
FROM validations v
LEFT JOIN utilisateurs u ON v.valide_par = u.id
WHERE u.id IS NULL;

-- 8) Vérifier cohérence dates enfants
SELECT id, nom, prenom, date_naissance
FROM enfants
WHERE date_naissance > CURRENT_DATE;

-- 9) Vérifier cohérence date agrément assistantes
SELECT id, nom, prenom, date_agrement
FROM assistantes_maternelles
WHERE date_agrement > CURRENT_DATE;

-- 10) Vérifier NULL obligatoires (ex: NIR des assistantes)
SELECT id, nom, prenom
FROM assistantes_maternelles
WHERE nir IS NULL OR nir = '';

-- ==============================================
-- Fin du script
-- ==============================================
