<?php
session_start();

// Incluir configuración centralizada
require_once 'config/email-config.php';

try {
    $pdo = getEmailDatabaseConnection();
} catch(Exception $e) {
    die("Error de conexión a la base de datos: " . $e->getMessage());
}

$token = $_GET['token'] ?? '';
$error = '';
$success = '';
$showForm = false;

if (empty($token)) {
    $error = "Token de recuperación no válido o faltante.";
} else {
    try {
        // Verificar si el token existe y es válido
        $stmt = $pdo->prepare("
            SELECT prt.*, e.nombres, e.apellidoPaterno, e.apellidoMaterno 
            FROM password_reset_tokens prt 
            JOIN templeado e ON prt.codempleado = e.codempleado 
            WHERE prt.token = ? AND prt.used = 0 AND prt.expires_at > NOW()
        ");
        $stmt->execute([$token]);
        $tokenData = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$tokenData) {
            $error = "El enlace de recuperación no es válido o ha expirado. Por favor, solicite un nuevo enlace.";
        } else {
            $showForm = true;
        }
    } catch (Exception $e) {
        $error = "Error interno del servidor. Intente nuevamente.";
    }
}

// Procesar actualización de contraseña
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $showForm) {
    $newPassword = $_POST['new_password'] ?? '';
    $confirmPassword = $_POST['confirm_password'] ?? '';
    
    if (empty($newPassword) || empty($confirmPassword)) {
        $error = "Todos los campos son requeridos.";
    } elseif (strlen($newPassword) < 6) {
        $error = "La contraseña debe tener al menos 6 caracteres.";
    } elseif ($newPassword !== $confirmPassword) {
        $error = "Las contraseñas no coinciden.";
    } else {
        try {
            // Actualizar contraseña usando MD5 (consistente con empleados.php)
            $hashedPassword = md5($newPassword);
            $stmt = $pdo->prepare("UPDATE templeado SET clave = ? WHERE codempleado = ?");
            $stmt->execute([$hashedPassword, $tokenData['codempleado']]);
            
            // Marcar token como usado
            $stmt = $pdo->prepare("UPDATE password_reset_tokens SET used = 1 WHERE token = ?");
            $stmt->execute([$token]);
            
            $success = "Contraseña actualizada exitosamente. Ya puede iniciar sesión con su nueva contraseña.";
            $showForm = false;
        } catch (Exception $e) {
            $error = "Error al actualizar la contraseña. Intente nuevamente.";
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Restablecer Contraseña - SIGVEM</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <style>
        body {
            background: linear-gradient(135deg,rgb(109, 182, 231) 0%,rgb(191, 125, 159) 100%);
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            padding: 20px 0;
        }

        .reset-container {
            width: 100%;
            max-width: 500px;
            padding: 20px;
        }

        .card {
            border: none;
            border-radius: 20px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
            overflow: hidden;
        }

        .card-header {
            background: linear-gradient(135deg, #6db6e7 0%, #bf7d9f 100%);
            color: white;
            padding: 30px;
            text-align: center;
            border: none;
        }

        .card-body {
            padding: 40px;
            background: white;
        }

        .form-control {
            border-radius: 10px;
            padding: 12px;
            border: 2px solid #eef2f7;
            transition: all 0.3s ease;
        }

        .form-control:focus {
            border-color: #0d6efd;
            box-shadow: none;
        }

        .btn-primary {
            border-radius: 10px;
            padding: 12px;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 1px;
            background: #0d6efd;
            border: none;
            transition: all 0.3s ease;
        }

        .btn-primary:hover {
            background: #0b5ed7;
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(13,110,253,0.3);
        }

        .alert {
            border-radius: 10px;
            border: none;
        }

        .password-strength {
            margin-top: 5px;
            font-size: 0.875rem;
        }

        .strength-weak { color: #dc3545; }
        .strength-medium { color: #ffc107; }
        .strength-strong { color: #28a745; }

        @media (max-width: 768px) {
            .card-body {
                padding: 20px;
            }
            
            .card-header {
                padding: 20px;
            }
        }
    </style>
</head>
<body>
    <div class="reset-container">
        <div class="card">
            <div class="card-header">
                <i class="fas fa-key fa-3x mb-3"></i>
                <h3>Restablecer Contraseña</h3>
                <p class="mb-0">SIGVEM - Sistema de Gestión</p>
            </div>
            <div class="card-body">
                <?php if ($error): ?>
                    <div class="alert alert-danger">
                        <i class="fas fa-exclamation-circle me-2"></i>
                        <?php echo htmlspecialchars($error); ?>
                    </div>
                    <div class="text-center">
                        <a href="index.php" class="btn btn-primary">
                            <i class="fas fa-arrow-left me-2"></i>Volver al Inicio
                        </a>
                    </div>
                <?php elseif ($success): ?>
                    <div class="alert alert-success">
                        <i class="fas fa-check-circle me-2"></i>
                        <?php echo htmlspecialchars($success); ?>
                    </div>
                    <div class="text-center">
                        <a href="index.php" class="btn btn-primary">
                            <i class="fas fa-sign-in-alt me-2"></i>Iniciar Sesión
                        </a>
                    </div>
                <?php elseif ($showForm): ?>
                    <div class="mb-4">
                        <p class="text-muted">
                            <i class="fas fa-user me-2"></i>
                            Usuario: <?php echo htmlspecialchars(trim($tokenData['nombres'] . ' ' . $tokenData['apellidoPaterno'] . ' ' . $tokenData['apellidoMaterno'])); ?>
                        </p>
                    </div>
                    
                    <form method="POST" id="resetPasswordForm">
                        <div class="mb-4">
                            <label class="form-label">
                                <i class="fas fa-lock me-2"></i>Nueva Contraseña
                            </label>
                            <input type="password" class="form-control" name="new_password" id="new_password" 
                                   placeholder="Ingrese su nueva contraseña" required minlength="6">
                            <div class="password-strength" id="passwordStrength"></div>
                        </div>
                        
                        <div class="mb-4">
                            <label class="form-label">
                                <i class="fas fa-lock me-2"></i>Confirmar Contraseña
                            </label>
                            <input type="password" class="form-control" name="confirm_password" id="confirm_password" 
                                   placeholder="Confirme su nueva contraseña" required minlength="6">
                            <div class="form-text">
                                La contraseña debe tener al menos 6 caracteres.
                            </div>
                        </div>
                        
                        <button type="submit" class="btn btn-primary w-100">
                            <i class="fas fa-save me-2"></i>Actualizar Contraseña
                        </button>
                    </form>
                <?php endif; ?>
            </div>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // Validación de contraseña en tiempo real
        document.getElementById('new_password').addEventListener('input', function() {
            const password = this.value;
            const strengthDiv = document.getElementById('passwordStrength');
            let strength = 0;
            let message = '';
            
            if (password.length >= 6) strength++;
            if (password.match(/[a-z]/) && password.match(/[A-Z]/)) strength++;
            if (password.match(/\d/)) strength++;
            if (password.match(/[^a-zA-Z\d]/)) strength++;
            
            if (password.length === 0) {
                message = '';
            } else if (strength < 2) {
                message = '<span class="strength-weak"><i class="fas fa-exclamation-triangle"></i> Contraseña débil</span>';
            } else if (strength < 3) {
                message = '<span class="strength-medium"><i class="fas fa-exclamation-circle"></i> Contraseña media</span>';
            } else {
                message = '<span class="strength-strong"><i class="fas fa-check-circle"></i> Contraseña fuerte</span>';
            }
            
            strengthDiv.innerHTML = message;
        });
        
        // Validación de confirmación de contraseña
        document.getElementById('confirm_password').addEventListener('input', function() {
            const newPassword = document.getElementById('new_password').value;
            const confirmPassword = this.value;
            
            if (confirmPassword && newPassword !== confirmPassword) {
                this.setCustomValidity('Las contraseñas no coinciden');
            } else {
                this.setCustomValidity('');
            }
        });
        
        // Validación del formulario
        document.getElementById('resetPasswordForm').addEventListener('submit', function(e) {
            const newPassword = document.getElementById('new_password').value;
            const confirmPassword = document.getElementById('confirm_password').value;
            
            if (newPassword !== confirmPassword) {
                e.preventDefault();
                alert('Las contraseñas no coinciden');
                return false;
            }
            
            if (newPassword.length < 6) {
                e.preventDefault();
                alert('La contraseña debe tener al menos 6 caracteres');
                return false;
            }
        });
    </script>
</body>
</html>
