<?php
session_start();
require_once 'config/connexion.php';

// Inclure PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

// Rediriger vers forgot-password.php si l'email n'est pas en session
if (empty($_SESSION['reset_email'])) {
    header('Location: forgot-password.php');
    exit;
}

$code_error = '';
$success_message = '';

// Traitement du renvoi du code
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['resend_code'])) {
    $email = $_SESSION['reset_email'];
    
    // Générer un nouveau code
    $new_code = str_pad(rand(0, 99999999), 8, '0', STR_PAD_LEFT);
    $expiry = date('Y-m-d H:i:s', time() + 600); // 10 minutes
    
    // Mettre à jour le code dans la base de données
    $stmt = $conn->prepare("UPDATE users_table SET recup_pass = ?, recup_expiry = ? WHERE user_email = ?");
    $stmt->bind_param("sss", $new_code, $expiry, $email);
    
    if ($stmt->execute()) {
        // Envoyer le nouveau code par email
        $mail = new PHPMailer(true);
        try {
            // Configuration SMTP
            $mail->isSMTP();
            $mail->Host = 'mail.services-ae.net';
            $mail->SMTPAuth = true;
            $mail->Username = 'manager@hebergood.com';
            $mail->Password = 'X!P0}h=HwhA*';
            $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
            $mail->Port = 465;
            $mail->CharSet = 'UTF-8';

            $mail->setFrom('manager@hebergood.com', 'HIBA ASSURANCE');
            $mail->addAddress($email);

            $mail->isHTML(true);
            $mail->Subject = 'Nouveau code de vérification - HIBA ASSURANCE';
            
            // Template HTML pour l'email
            $mail->Body = "
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
                    .container { max-width: 600px; margin: 0 auto; padding: 20px; }
                    .header { background-color: #1e40af; color: white; padding: 20px; text-align: center; border-radius: 8px 8px 0 0; }
                    .content { background-color: #f8f9fa; padding: 30px; border-radius: 0 0 8px 8px; }
                    .code { font-size: 32px; font-weight: bold; color: #1e40af; letter-spacing: 8px; text-align: center; 
                            background-color: white; padding: 20px; border-radius: 8px; margin: 20px 0; border: 2px dashed #1e40af; }
                    .footer { text-align: center; margin-top: 20px; color: #666; font-size: 12px; }
                    .warning { background-color: #fff3cd; border: 1px solid #ffeaa7; color: #856404; padding: 15px; 
                              border-radius: 5px; margin: 15px 0; }
                </style>
            </head>
            <body>
                <div class='container'>
                    <div class='header'>
                        <h1>HIBA ASSURANCE</h1>
                        <p>Nouveau code de vérification</p>
                    </div>
                    <div class='content'>
                        <h2>Bonjour,</h2>
                        <p>Vous avez demandé un nouveau code de vérification pour réinitialiser votre mot de passe.</p>
                        
                        <p><strong>Votre nouveau code de vérification est :</strong></p>
                        <div class='code'>$new_code</div>
                        
                        <div class='warning'>
                            <strong>⚠️ Important :</strong>
                            <ul>
                                <li>Ce code expire dans <strong>10 minutes</strong></li>
                                <li>Ne partagez jamais ce code avec qui que ce soit</li>
                                <li>Si vous n'avez pas demandé ce code, ignorez cet email</li>
                            </ul>
                        </div>
                        
                        <p>Si vous rencontrez des difficultés, contactez notre support technique.</p>
                        
                        <p>Cordialement,<br>
                        <strong>L'équipe HIBA ASSURANCE</strong></p>
                    </div>
                    <div class='footer'>
                        <p>Cet email a été envoyé automatiquement, merci de ne pas y répondre.</p>
                        <p>HIBA ASSURANCE - Système de gestion des polices d'assurance</p>
                    </div>
                </div>
            </body>
            </html>";

            // Version texte alternative
            $mail->AltBody = "HIBA ASSURANCE\n\nNouveau code de vérification\n\nVotre code : $new_code\n\nCe code expire dans 10 minutes.\n\nCordialement,\nL'équipe HIBA ASSURANCE";

            $mail->send();
            $success_message = "Un nouveau code de vérification a été envoyé à votre adresse email.";
            
        } catch (Exception $e) {
            $code_error = "Erreur lors de l'envoi de l'email : " . $mail->ErrorInfo;
        }
    } else {
        $code_error = "Erreur lors de la génération du nouveau code.";
    }
    $stmt->close();
}

// Traitement de la vérification du code
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !isset($_POST['resend_code'])) {
    $input_code = implode('', array_map('trim', $_POST['code'] ?? []));
    $email = $_SESSION['reset_email'];
    if ($email && $input_code) {
        $stmt = $conn->prepare("SELECT recup_pass, recup_expiry FROM users_table WHERE user_email = ?");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($recup_pass, $recup_expiry);
        if ($stmt->num_rows > 0 && $stmt->fetch()) {
            $now = date('Y-m-d H:i:s');
            if ($input_code === $recup_pass && $recup_expiry && $now <= $recup_expiry) {
                $_SESSION['code_verified'] = true;
                $stmt->close();
                header('Location: reset-password.php');
                exit;
            } elseif ($input_code !== $recup_pass) {
                $code_error = "Code incorrect.";
            } else {
                $code_error = "Le code a expiré. Veuillez recommencer la procédure.";
            }
        } else {
            $code_error = "Erreur interne.";
        }
        $stmt->close();
    } else {
        $code_error = "Veuillez saisir le code.";
    }
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <?php include('includes/head_code.php'); ?>    <title>Vérification du code - HIBA ASSURANCE</title>
    <style>
        .code-input { 
            width: 50px; 
            text-align: center; 
            font-size: 2rem; 
            margin-right: 5px; 
            font-weight: bold;
            border: 2px solid #ddd;
            border-radius: 8px;
            transition: all 0.3s ease;
        }
        .code-input:focus {
            border-color: #1e40af;
            box-shadow: 0 0 0 0.2rem rgba(30, 64, 175, 0.25);
            transform: scale(1.05);
        }
        .code-input.filled {
            background-color: #e3f2fd;
            border-color: #1e40af;
        }
        .email-display {
            background-color: #f8f9fa;
            padding: 8px 16px;
            border-radius: 20px;
            border: 1px solid #dee2e6;
            display: inline-block;
            font-family: monospace;
        }
        .btn-resend {
            position: relative;
            overflow: hidden;
        }
        .btn-resend:disabled {
            cursor: not-allowed;
        }
        .countdown {
            font-size: 0.8em;
            color: #6c757d;
        }
        @keyframes pulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.05); }
            100% { transform: scale(1); }
        }
        .pulse-animation {
            animation: pulse 0.6s ease-in-out;
        }
    </style>
</head>
<body class="bg-gradient-login">
<div class="container-login">
    <div class="row justify-content-center">
        <div class="col-xl-6 col-lg-6 col-md-9">
            <div class="card shadow-sm my-5">
                <div class="card-body p-0">
                    <div class="row">
                        <div class="col-lg-12">
                            <div class="login-form">                                <div class="text-center">
                                    <h1 class="h4 text-gray-900 mb-4">Vérification du code</h1>
                                    <p class="mb-3">Veuillez saisir le code à 8 chiffres envoyé à :</p>
                                    <div class="email-display mb-4">
                                        <i class="fas fa-envelope text-primary"></i> 
                                        <?= htmlspecialchars($_SESSION['reset_email']) ?>
                                    </div>
                                </div>
                                
                                <?php if ($success_message): ?>
                                    <div class="alert alert-success">
                                        <i class="fas fa-check-circle"></i> <?= $success_message ?>
                                    </div>
                                <?php endif; ?>
                                
                                <?php if ($code_error): ?>
                                    <div class="alert alert-danger">
                                        <i class="fas fa-exclamation-triangle"></i> <?= $code_error ?>
                                    </div>
                                <?php endif; ?>                                <form method="POST" action="">
                                    <div class="form-group d-flex justify-content-center">
                                        <?php for ($i = 0; $i < 8; $i++): ?>
                                            <input type="text" maxlength="1" name="code[]" class="form-control code-input" required pattern="\d">
                                        <?php endfor; ?>
                                    </div>
                                    <div class="form-group">
                                        <button type="submit" class="btn btn-primary btn-block">
                                            <i class="fas fa-check"></i> Valider le code
                                        </button>
                                    </div>
                                </form>
                                
                                <!-- Bouton de renvoi du code -->
                                <div class="text-center mt-3">
                                    <p class="small text-muted">Vous n'avez pas reçu le code ?</p>
                                    <form method="POST" action="" class="d-inline">
                                        <button type="submit" name="resend_code" class="btn btn-outline-secondary btn-sm">
                                            <i class="fas fa-redo"></i> Renvoyer le code
                                        </button>
                                    </form>
                                </div>
                                
                                <hr>
                                <div class="text-center">
                                    <a class="font-weight-bold small" href="forgot-password.php">
                                        <i class="fas fa-arrow-left"></i> Changer d'adresse email
                                    </a>
                                    <br>
                                    <a class="font-weight-bold small" href="login.php">
                                        <i class="fas fa-sign-in-alt"></i> Retour à la connexion
                                    </a>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
// Variables pour la gestion du code
let resendButton = null;
let countdownTimer = null;
let resendCooldown = 60; // 60 secondes d'attente

document.addEventListener('DOMContentLoaded', function() {
    resendButton = document.querySelector('button[name="resend_code"]');
    
    // Démarrer le countdown si un message de succès est affiché
    <?php if ($success_message): ?>
    startResendCooldown();
    <?php endif; ?>
});

// Gestion des champs de code
document.querySelectorAll('.code-input').forEach((input, idx, arr) => {
    // Naviger vers le champ suivant après saisie
    input.addEventListener('input', function() {
        // Ajouter classe visuelle
        if (this.value) {
            this.classList.add('filled');
        } else {
            this.classList.remove('filled');
        }
        
        // Passer au champ suivant
        if (this.value.length === 1 && idx < arr.length - 1) {
            arr[idx + 1].focus();
            arr[idx + 1].classList.add('pulse-animation');
            setTimeout(() => arr[idx + 1].classList.remove('pulse-animation'), 600);
        }
        
        // Auto-submit si tous les champs sont remplis
        if (idx === arr.length - 1 && this.value.length === 1) {
            let allFilled = true;
            arr.forEach(inp => {
                if (!inp.value) allFilled = false;
            });
            if (allFilled) {
                // Petit délai pour une meilleure UX
                setTimeout(() => {
                    document.querySelector('form').submit();
                }, 500);
            }
        }
    });
    
    // Gérer le retour arrière
    input.addEventListener('keydown', function(e) {
        if (e.key === 'Backspace' && !this.value && idx > 0) {
            arr[idx - 1].focus();
            arr[idx - 1].value = '';
            arr[idx - 1].classList.remove('filled');
        }
        
        // Accepter seulement les chiffres
        if (!/[0-9]/.test(e.key) && !['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {
            e.preventDefault();
        }
    });
    
    // Gestion du collage
    input.addEventListener('paste', function(e) {
        const paste = (e.clipboardData || window.clipboardData).getData('text');
        if (/^\d{8}$/.test(paste)) {
            for (let i = 0; i < 8; i++) {
                if (arr[i]) {
                    arr[i].value = paste[i];
                    arr[i].classList.add('filled');
                }
            }
            arr[7].focus();
            
            // Auto-submit après collage
            setTimeout(() => {
                document.querySelector('form').submit();
            }, 500);
            
            e.preventDefault();
        }
    });
});

// Fonction pour démarrer le countdown de renvoi
function startResendCooldown() {
    if (!resendButton) return;
    
    let countdown = resendCooldown;
    resendButton.disabled = true;
    resendButton.innerHTML = `<i class="fas fa-clock"></i> Renvoyer dans <span class="countdown">${countdown}s</span>`;
    
    countdownTimer = setInterval(() => {
        countdown--;
        if (countdown > 0) {
            resendButton.innerHTML = `<i class="fas fa-clock"></i> Renvoyer dans <span class="countdown">${countdown}s</span>`;
        } else {
            clearInterval(countdownTimer);
            resendButton.disabled = false;
            resendButton.innerHTML = '<i class="fas fa-redo"></i> Renvoyer le code';
        }
    }, 1000);
}

// Focus automatique sur le premier champ
document.querySelector('.code-input').focus();
</script>
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<script src="js/ruang-admin.min.js"></script>
</body>
</html>
