-- =====================================================
-- SYSTÈME D'ABONNEMENT COMPLET
-- Exécuter dans phpMyAdmin
-- =====================================================

-- 1. Ajouter 'weekly' au billing_cycle
ALTER TABLE `subscription_plans` 
    MODIFY COLUMN `billing_cycle` ENUM('weekly', 'monthly', 'quarterly', 'annual') NOT NULL DEFAULT 'monthly';

-- 2. Ajouter is_featured (ignorer erreur si existe déjà)
ALTER TABLE `subscription_plans` ADD COLUMN `is_featured` TINYINT(1) NOT NULL DEFAULT 0;

-- 3. S'assurer que user_subscriptions existe avec toutes les colonnes
CREATE TABLE IF NOT EXISTS `user_subscriptions` (
    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    `user_id` BIGINT UNSIGNED NOT NULL COMMENT 'ID de l\'utilisateur',
    `subscription_plan_id` BIGINT UNSIGNED NULL COMMENT 'ID du plan',
    `stripe_subscription_id` VARCHAR(255) NULL COMMENT 'ID abonnement Stripe',
    `stripe_customer_id` VARCHAR(255) NULL COMMENT 'ID client Stripe',
    `status` ENUM('active', 'cancelled', 'expired', 'pending', 'trial', 'past_due') NOT NULL DEFAULT 'pending',
    `started_at` TIMESTAMP NULL COMMENT 'Date de début',
    `ends_at` TIMESTAMP NULL COMMENT 'Date de fin prévue',
    `current_period_start` TIMESTAMP NULL COMMENT 'Début période actuelle',
    `current_period_end` TIMESTAMP NULL COMMENT 'Fin période actuelle',
    `trial_ends_at` TIMESTAMP NULL COMMENT 'Fin de la période d\'essai',
    `cancelled_at` TIMESTAMP NULL COMMENT 'Date de résiliation',
    `cancellation_reason` TEXT NULL COMMENT 'Raison de résiliation',
    `current_amount` DECIMAL(10,2) NULL COMMENT 'Montant payé',
    `currency` VARCHAR(3) DEFAULT 'EUR',
    `auto_renew` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Renouvellement auto',
    `payment_method` VARCHAR(50) NULL COMMENT 'Méthode de paiement',
    `last_payment_at` TIMESTAMP NULL COMMENT 'Dernier paiement',
    `next_billing_at` TIMESTAMP NULL COMMENT 'Prochain prélèvement',
    `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `user_subscriptions_user_id_index` (`user_id`),
    KEY `user_subscriptions_plan_id_index` (`subscription_plan_id`),
    KEY `user_subscriptions_status_index` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 5. Exemples de plans (SANS slug - optionnel)
INSERT INTO `subscription_plans` (`name`, `description`, `price`, `currency`, `billing_cycle`, `features`, `is_active`, `is_featured`) VALUES
('Hebdomadaire', 'Idéal pour tester', 9.99, 'EUR', 'weekly', '["Accès complet 7 jours", "Support par email"]', 1, 0),
('Mensuel', 'Le plus populaire', 29.99, 'EUR', 'monthly', '["Accès illimité", "Support prioritaire", "Statistiques avancées", "Badge Pro"]', 1, 1),
('Trimestriel', 'Économisez 15%', 74.99, 'EUR', 'quarterly', '["Tout du Mensuel", "3 mois d\'accès", "Économie de 15€"]', 1, 0),
('Annuel', 'Meilleure offre - 2 mois offerts', 249.99, 'EUR', 'annual', '["Tout du Mensuel", "12 mois d\'accès", "2 mois gratuits", "Support VIP 24/7"]', 1, 0)
ON DUPLICATE KEY UPDATE `updated_at` = NOW();

-- =====================================================
-- FIN DU SCRIPT
-- L'app est GRATUITE par défaut (subscription_enabled = 0)
-- Allez dans Admin > Paramètres > Abonnements pour activer
-- =====================================================
