-- =========================================================================
-- Script SQL pour NETTOYER toutes les Données d'Inscription et de Suivi
-- =========================================================================
-- 
-- ⚠️ ATTENTION : Ce script supprime TOUTES les données d'inscription et de
-- progression des étudiants. Les étudiants devront se réinscrire aux formations.
--
-- SAUVEGARDEZ VOTRE BASE DE DONNÉES AVANT D'EXÉCUTER CE SCRIPT !
--
-- Ce qui sera supprimé :
--   - Toutes les inscriptions aux formations (v2_enrollments)
--   - Tous les progrès des séances (v2_student_seance_progress)
--   - Tous les quiz/tests passés (v2_student_assessments)
--   - Toutes les réponses aux quiz (v2_student_assessment_answers)
--   - Toutes les sessions étudiants (v2_student_sessions)
--
-- Ce qui sera CONSERVÉ :
--   - Les comptes étudiants (v2_students)
--   - Les formations (v2_formations)
--   - Les séances et leur contenu (v2_seances)
--   - Toute la structure du programme
--
-- =========================================================================

-- Désactiver temporairement les vérifications de clés étrangères

-- Commencer une transaction pour pouvoir annuler en cas d'erreur
START TRANSACTION;

-- =========================================================================
-- ÉTAPE 1: VÉRIFICATION - Afficher ce qui va être supprimé
-- =========================================================================

SELECT '=== VÉRIFICATION AVANT SUPPRESSION ===' as '';

-- Compter les inscriptions
SELECT 
    COUNT(*) as total_enrollments,
    COUNT(DISTINCT student_id) as unique_students,
    COUNT(DISTINCT formation_id) as unique_formations
FROM v2_enrollments;

-- Compter les progrès de séances
SELECT 
    COUNT(*) as total_seance_progress,
    COUNT(CASE WHEN status = 'completed' THEN 1 END) as completed_seances,
    COUNT(CASE WHEN status = 'in_progress' THEN 1 END) as in_progress_seances
FROM v2_student_seance_progress;

-- Compter les assessments/quiz
SELECT 
    COUNT(*) as total_assessments,
    COUNT(CASE WHEN status = 'completed' THEN 1 END) as completed_assessments,
    COUNT(CASE WHEN assessment_type = 'seance_quiz' THEN 1 END) as seance_quizzes,
    COUNT(CASE WHEN assessment_type = 'phase_test' THEN 1 END) as phase_tests
FROM v2_student_assessments;

-- Compter les réponses aux quiz
SELECT COUNT(*) as total_quiz_answers
FROM v2_student_assessment_answers;

-- Afficher les étudiants concernés
SELECT 
    s.id,
    s.email,
    s.name,
    COUNT(DISTINCT e.formation_id) as formations_count
FROM v2_students s
LEFT JOIN v2_enrollments e ON s.id = e.student_id
GROUP BY s.id, s.email, s.name
HAVING formations_count > 0
ORDER BY formations_count DESC;

-- =========================================================================
-- ÉTAPE 2: SUPPRESSION - Nettoyer toutes les tables de suivi
-- =========================================================================

-- ⚠️ DÉCOMMENTER LES LIGNES CI-DESSOUS POUR EFFECTUER LA SUPPRESSION ⚠️

-- DELETE FROM v2_student_assessment_answers;
-- SELECT '✓ Réponses aux quiz supprimées' as status, ROW_COUNT() as rows_deleted;

-- DELETE FROM v2_student_assessments;
-- SELECT '✓ Assessments/Quiz supprimés' as status, ROW_COUNT() as rows_deleted;

-- DELETE FROM v2_student_seance_progress;
-- SELECT '✓ Progrès des séances supprimés' as status, ROW_COUNT() as rows_deleted;

-- DELETE FROM v2_student_sessions WHERE 1=1;
-- SELECT '✓ Sessions étudiants supprimées' as status, ROW_COUNT() as rows_deleted;

-- DELETE FROM v2_enrollments;
-- SELECT '✓ Inscriptions supprimées' as status, ROW_COUNT() as rows_deleted;

-- DELETE FROM v2_student_quiz_assignments WHERE 1=1;
-- SELECT '✓ Assignments de quiz supprimés' as status, ROW_COUNT() as rows_deleted;

-- Réinitialiser le compteur d'étudiants dans les formations
-- UPDATE v2_formations SET student_count = 0;
-- SELECT '✓ Compteurs de formations réinitialisés' as status, ROW_COUNT() as rows_updated;

-- =========================================================================
-- ÉTAPE 3: VÉRIFICATION POST-SUPPRESSION
-- =========================================================================

-- SELECT '=== VÉRIFICATION APRÈS SUPPRESSION ===' as '';

-- SELECT COUNT(*) as remaining_enrollments FROM v2_enrollments;
-- SELECT COUNT(*) as remaining_seance_progress FROM v2_student_seance_progress;
-- SELECT COUNT(*) as remaining_assessments FROM v2_student_assessments;
-- SELECT COUNT(*) as remaining_quiz_answers FROM v2_student_assessment_answers;
-- SELECT COUNT(*) as remaining_student_sessions FROM v2_student_sessions;

-- Vérifier que les étudiants sont toujours là
-- SELECT COUNT(*) as total_students_preserved FROM v2_students;

-- Vérifier que les formations sont toujours là
-- SELECT COUNT(*) as total_formations_preserved FROM v2_formations;

-- =========================================================================
-- FINALISATION
-- =========================================================================

-- ⚠️ IMPORTANT : Choisir l'une des deux options ci-dessous ⚠️

-- OPTION A : Valider les suppressions (décommenter si tout est OK)
-- COMMIT;
-- SELECT '✓✓✓ SUPPRESSIONS VALIDÉES ✓✓✓' as final_status;

-- OPTION B : Annuler les suppressions (décommenter pour annuler)
ROLLBACK;
SELECT '✗✗✗ SUPPRESSIONS ANNULÉES - Aucune modification ✗✗✗' as final_status;

-- Réactiver les vérifications de clés étrangères

-- =========================================================================
-- SCRIPT PRÊT À L'EMPLOI (Sans commentaires)
-- =========================================================================
-- 
-- Copiez et exécutez ce bloc si vous êtes sûr de vouloir tout supprimer :
-- 
-- START TRANSACTION;
-- SET FOREIGN_KEY_CHECKS = 0;
-- 
-- DELETE FROM v2_student_assessment_answers;
-- DELETE FROM v2_student_assessments;
-- DELETE FROM v2_student_seance_progress;
-- DELETE FROM v2_student_sessions;
-- DELETE FROM v2_student_quiz_assignments;
-- DELETE FROM v2_enrollments;
-- UPDATE v2_formations SET student_count = 0;
-- 
-- SET FOREIGN_KEY_CHECKS = 1;
-- COMMIT;
-- 
-- SELECT 'Nettoyage terminé !' as status;
-- 
-- =========================================================================


-- =========================================================================
-- ALTERNATIVE : Supprimer uniquement pour UN étudiant spécifique
-- =========================================================================
-- 
-- Si vous voulez nettoyer seulement pour medtaki@gmail.com par exemple :
-- 
-- START TRANSACTION;
-- SET FOREIGN_KEY_CHECKS = 0;
-- 
-- SET @student_id = (SELECT id FROM v2_students WHERE email = 'medtaki@gmail.com');
-- 
-- DELETE FROM v2_student_assessment_answers 
-- WHERE assessment_id IN (
--     SELECT id FROM v2_student_assessments WHERE student_id = @student_id
-- );
-- 
-- DELETE FROM v2_student_assessments WHERE student_id = @student_id;
-- DELETE FROM v2_student_seance_progress WHERE student_id = @student_id;
-- DELETE FROM v2_student_sessions WHERE student_id = @student_id;
-- DELETE FROM v2_student_quiz_assignments WHERE student_id = @student_id;
-- 
-- DELETE FROM v2_enrollments WHERE student_id = @student_id;
-- 
-- -- Décrémenter les compteurs des formations concernées
-- UPDATE v2_formations f
-- SET student_count = GREATEST(student_count - 1, 0)
-- WHERE id IN (SELECT DISTINCT formation_id FROM v2_enrollments WHERE student_id = @student_id);
-- 
-- SET FOREIGN_KEY_CHECKS = 1;
-- COMMIT;
-- 
-- SELECT CONCAT('Données supprimées pour l\'étudiant: ', @student_id) as status;
-- 
-- =========================================================================


-- =========================================================================
-- RÉSUMÉ DES TABLES AFFECTÉES
-- =========================================================================
-- 
-- Tables nettoyées :
--   1. v2_student_assessment_answers    (Réponses aux questions de quiz)
--   2. v2_student_assessments           (Quiz et tests passés)
--   3. v2_student_seance_progress       (Progression dans les séances)
--   4. v2_student_sessions              (Sessions étudiants)
--   5. v2_student_quiz_assignments      (Assignments de quiz)
--   6. v2_enrollments                   (Inscriptions aux formations)
-- 
-- Champs mis à jour :
--   - v2_formations.student_count → 0
-- 
-- Tables PRÉSERVÉES :
--   ✓ v2_students              (Comptes étudiants)
--   ✓ v2_formations            (Formations et leur contenu)
--   ✓ v2_seances               (Séances)
--   ✓ v2_lessons               (Leçons)
--   ✓ v2_phases                (Phases)
--   ✓ v2_levels                (Niveaux)
--   ✓ v2_programs              (Programmes)
--   ✓ Tout le contenu pédagogique
-- 
-- =========================================================================
