<?php
// includes/class-qcm-checker.php

class QCM_Access_Checker {
    
    /**
     * Vérifie si l'user peut passer le QCM
     */
    public static function can_access_qcm($user_id) {
        // 1. Déjà réussi ?
        if (get_user_meta($user_id, 'qcm_passed', true)) {
            return [
                'allowed' => false,
                'reason' => 'already_passed',
                'message' => '✅ Vous avez déjà validé le QCM avec succès !'
            ];
        }
        
        // 2. Bloqué temporairement ?
        $blocked_until = get_user_meta($user_id, 'qcm_blocked_until', true);
        if ($blocked_until && time() < $blocked_until) {
            $date = date_i18n('d/m/Y à H:i', $blocked_until);
            return [
                'allowed' => false,
                'reason' => 'blocked',
                'message' => "❌ Nouvelle tentative possible le <strong>$date</strong>"
            ];
        }
        
        // 3. OK
        return [
            'allowed' => true,
            'reason' => null,
            'message' => null
        ];
    }
    
    /**
     * Bloque l'user pour 7 jours
     */
    public static function block_user($user_id) {
        $blocked_until = time() + (7 * DAY_IN_SECONDS);
        update_user_meta($user_id, 'qcm_blocked_until', $blocked_until);
        
        // Incrémenter compteur tentatives
        $attempts = (int) get_user_meta($user_id, 'qcm_attempts', true);
        update_user_meta($user_id, 'qcm_attempts', $attempts + 1);
    }
    
    /**
     * Marque le QCM comme réussi et change le rôle
     */
    public static function mark_passed($user_id, $score) {
        update_user_meta($user_id, 'qcm_passed', true);
        update_user_meta($user_id, 'qcm_final_score', $score);
        update_user_meta($user_id, 'qcm_passed_date', current_time('mysql'));
        
        // Changer rôle
        $user = new WP_User($user_id);
        $user->set_role('author');
    }
}