-- =============================================================================
-- SCRIPT DE PURGE BASE ESTAIR - PRÉPARATION MISE EN PRODUCTION
-- =============================================================================
-- Date: 2025-12-11
-- Description: Vide les données de développement/test tout en préservant
--              la structure et les données de référence essentielles
-- =============================================================================

SET FOREIGN_KEY_CHECKS = 0;

-- -----------------------------------------------------------------------------
-- 1. DONNÉES MÉTIER (à purger complètement)
-- -----------------------------------------------------------------------------

-- PNR et documents de vol
TRUNCATE TABLE `pnr`;
TRUNCATE TABLE `segments`;
TRUNCATE TABLE `etatsdeventes`;
TRUNCATE TABLE `presale`;

-- Données BMP/BSP
TRUNCATE TABLE `bmps`;
TRUNCATE TABLE `bsps`;
TRUNCATE TABLE `bspdetails`;
TRUNCATE TABLE `bspcompanies`;

-- Mouvements financiers
TRUNCATE TABLE `mouvements`;
TRUNCATE TABLE `mouvement_logs`;
TRUNCATE TABLE `financial_requests`;
TRUNCATE TABLE `creditlimit`;
TRUNCATE TABLE `soldes`;
TRUNCATE TABLE `soldesbmp`;
TRUNCATE TABLE `transaction`;
TRUNCATE TABLE `remboursement`;

-- Exécutions GDS et Selling Platform
TRUNCATE TABLE `execution_gds`;

-- Clients et relations
TRUNCATE TABLE `accounts`;
TRUNCATE TABLE `beneficiaires`;
TRUNCATE TABLE `contacts`;
-- TRUNCATE TABLE `companies`;

-- Documents et détails
-- CONSERVER: `documents`, `details`

-- Approvisionnements et factures
TRUNCATE TABLE `approvisionnements`;
TRUNCATE TABLE `factures`;

-- Banques (CONSERVER)

-- -----------------------------------------------------------------------------
-- 2. LOGS ET JOBS DE TRAITEMENT (à purger pour démarrer propre)
-- -----------------------------------------------------------------------------

-- Logs de traitement AIR
TRUNCATE TABLE `air_processing_jobs`;
TRUNCATE TABLE `air_processing_logs`;

-- Logs de traitement BMP
TRUNCATE TABLE `bmp_processing_logs`;

-- Jobs Laravel en attente
TRUNCATE TABLE `jobs`;
TRUNCATE TABLE `failed_jobs`;

-- Logs de changements
TRUNCATE TABLE `name_change_logs`;

-- Cache Laravel
TRUNCATE TABLE `cache`;
TRUNCATE TABLE `cache_locks`;

-- Sessions utilisateurs
TRUNCATE TABLE `sessions`;

-- -----------------------------------------------------------------------------
-- 3. DONNÉES À CONSERVER (NE PAS TOUCHER)
-- -----------------------------------------------------------------------------

-- Users et authentification
-- CONSERVER: `users`, `password_resets`, `personal_access_tokens`

-- Configuration et templates
-- CONSERVER: `notification_templates`, `notification_ab_tests`, `notification_ab_variants`

-- Documents et détails (CONSERVER)
-- CONSERVER: `documents`, `details`

-- Banques (CONSERVER)
-- CONSERVER: `banques`

-- Données RHC (CONSERVER)
-- CONSERVER: `rhcs`

-- Clés API
-- CONSERVER: `api_keys`

-- Migrations Laravel
-- CONSERVER: `migrations`

-- -----------------------------------------------------------------------------
-- 4. RÉINITIALISER LES AUTO_INCREMENT (optionnel mais recommandé)
-- -----------------------------------------------------------------------------

ALTER TABLE `pnr` AUTO_INCREMENT = 1;
ALTER TABLE `segments` AUTO_INCREMENT = 1;
ALTER TABLE `etatsdeventes` AUTO_INCREMENT = 1;
ALTER TABLE `presale` AUTO_INCREMENT = 1;
ALTER TABLE `bmps` AUTO_INCREMENT = 1;
ALTER TABLE `bsps` AUTO_INCREMENT = 1;
ALTER TABLE `bspdetails` AUTO_INCREMENT = 1;
ALTER TABLE `bspcompanies` AUTO_INCREMENT = 1;
ALTER TABLE `mouvements` AUTO_INCREMENT = 1;
ALTER TABLE `mouvement_logs` AUTO_INCREMENT = 1;
ALTER TABLE `financial_requests` AUTO_INCREMENT = 1;
ALTER TABLE `execution_gds` AUTO_INCREMENT = 1;
ALTER TABLE `accounts` AUTO_INCREMENT = 1;
ALTER TABLE `beneficiaires` AUTO_INCREMENT = 1;
ALTER TABLE `contacts` AUTO_INCREMENT = 1;
-- ALTER TABLE `companies` AUTO_INCREMENT = 1;
ALTER TABLE `approvisionnements` AUTO_INCREMENT = 1;
ALTER TABLE `factures` AUTO_INCREMENT = 1;
-- ALTER TABLE `banques` AUTO_INCREMENT = 1;
ALTER TABLE `creditlimit` AUTO_INCREMENT = 1;
ALTER TABLE `soldes` AUTO_INCREMENT = 1;
ALTER TABLE `soldesbmp` AUTO_INCREMENT = 1;
ALTER TABLE `transaction` AUTO_INCREMENT = 1;
ALTER TABLE `remboursement` AUTO_INCREMENT = 1;
ALTER TABLE `air_processing_jobs` AUTO_INCREMENT = 1;
ALTER TABLE `air_processing_logs` AUTO_INCREMENT = 1;
ALTER TABLE `bmp_processing_logs` AUTO_INCREMENT = 1;

SET FOREIGN_KEY_CHECKS = 1;

-- -----------------------------------------------------------------------------
-- 5. VÉRIFICATION POST-PURGE
-- -----------------------------------------------------------------------------

SELECT 'pnr' AS table_name, COUNT(*) AS count FROM pnr
UNION ALL
SELECT 'segments', COUNT(*) FROM segments
UNION ALL
SELECT 'etatsdeventes', COUNT(*) FROM etatsdeventes
UNION ALL
SELECT 'presale', COUNT(*) FROM presale
UNION ALL
SELECT 'accounts', COUNT(*) FROM accounts
UNION ALL
SELECT 'beneficiaires', COUNT(*) FROM beneficiaires
UNION ALL
SELECT 'companies', COUNT(*) FROM companies
UNION ALL
SELECT 'banques', COUNT(*) FROM banques
UNION ALL
SELECT 'creditlimit', COUNT(*) FROM creditlimit
UNION ALL
SELECT 'soldes', COUNT(*) FROM soldes
UNION ALL
SELECT 'soldesbmp', COUNT(*) FROM soldesbmp
UNION ALL
SELECT 'transaction', COUNT(*) FROM transaction
UNION ALL
SELECT 'remboursement', COUNT(*) FROM remboursement
UNION ALL
SELECT 'approvisionnements', COUNT(*) FROM approvisionnements
UNION ALL
SELECT 'factures', COUNT(*) FROM factures
UNION ALL
SELECT 'rhcs', COUNT(*) FROM rhcs
UNION ALL
SELECT 'air_processing_jobs', COUNT(*) FROM air_processing_jobs
UNION ALL
SELECT 'mouvements', COUNT(*) FROM mouvements
UNION ALL
SELECT 'users', COUNT(*) FROM users
UNION ALL
SELECT 'notification_templates', COUNT(*) FROM notification_templates;

-- =============================================================================
-- FIN DU SCRIPT DE PURGE
-- =============================================================================