<?php
include('includes/header.php');

// =======================
// SEGURIDAD
// =======================
if (!isset($_SESSION['loggedin']) || !isset($_SESSION['name'])) {
    echo "<script>window.location.href='index.php';</script>";
    exit;
}

$username = $_SESSION['name'];
$role = $_SESSION['role'] ?? 'reseller';
$targetTable = ($role === 'master') ? 'user' : 'menualuser';

// =======================
// CARGAR DATOS DEL USUARIO
// =======================
$userData = $db->select(
    $targetTable,
    '*',
    'username = :u',
    '',
    [':u' => $username]
);

if (!$userData) {
    die("Acceso denegado o usuario no encontrado.");
}

$user = $userData[0];

// =======================
// LÓGICA DE ACTUALIZACIÓN (RESTRINGIDA)
// =======================
if (isset($_POST['submit'])) {
    $newUsername = trim(sanitize($_POST['username'] ?? ''));
    $newPassword = $_POST['password'] ?? '';
    
    // ========== VALIDACIONES SEGÚN ROL ==========
    
    // Caso 1: MASTER - Puede cambiar nombre de usuario y contraseña
    if ($role === 'master') {
        $updateData = [];
        
        // Validar cambio de username
        if ($newUsername !== $username) {
            if (empty($newUsername)) {
                echo "<script>alert('El nombre de usuario no puede estar vacío.'); window.history.back();</script>";
                exit;
            }
            
            // Verificar que el nuevo username no exista
            $check = $db->select($targetTable, 'username', 'username = :u', '', [':u' => $newUsername]);
            if (!empty($check)) {
                echo "<script>alert('Error: El nombre de usuario ya está en uso.'); window.history.back();</script>";
                exit;
            }
            
            $updateData['username'] = $newUsername;
        }
        
        // Validar cambio de contraseña
        if (!empty($newPassword)) {
            if (strlen($newPassword) < 6) {
                echo "<script>alert('La contraseña debe tener al menos 6 caracteres para mayor seguridad.'); window.history.back();</script>";
                exit;
            }
            $updateData['password'] = $newPassword;
        }
        
        // Ejecutar actualización si hay cambios
        if (!empty($updateData)) {
            $db->update(
                $targetTable,
                $updateData,
                'username = :u',
                [':u' => $username]
            );
            
            // Actualizar sesión si se cambió el username
            if (isset($updateData['username'])) {
                $_SESSION['name'] = $newUsername;
            }
            
            echo "<script>alert('¡Perfil actualizado exitosamente!'); window.location.href='user.php';</script>";
        } else {
            echo "<script>alert('No se detectaron cambios.'); window.location.href='user.php';</script>";
        }
        exit;
    }
    
    // Caso 2: RESELLER o SUPER RESELLER - Solo pueden cambiar contraseña
    else {
        // Verificar que NO estén intentando cambiar el username
        if ($newUsername !== $username) {
            echo "<script>alert('Acceso denegado: No puedes cambiar tu nombre de usuario. Solo el Master puede hacerlo.'); window.history.back();</script>";
            exit;
        }
        
        // Validar cambio de contraseña
        $updateData = [];
        if (!empty($newPassword)) {
            if (strlen($newPassword) < 6) {
                echo "<script>alert('La contraseña debe tener al menos 6 caracteres para mayor seguridad.'); window.history.back();</script>";
                exit;
            }
            $updateData['password'] = $newPassword;
        }
        
        // Ejecutar actualización solo si hay nueva contraseña
        if (!empty($updateData)) {
            $db->update(
                $targetTable,
                $updateData,
                'username = :u',
                [':u' => $username]
            );
            
            echo "<script>alert('¡Contraseña actualizada exitosamente!'); window.location.href='user.php';</script>";
        } else {
            echo "<script>alert('No se detectó cambio de contraseña. Por favor ingresa una nueva contraseña.'); window.history.back();</script>";
        }
        exit;
    }
}
?>

<div class="col-md-6 mx-auto">
    <div class="card-body">
        <div class="card text-white ctluser-main" style="background: rgba(0,0,0,0.5); border: 1px solid rgba(255,255,255,0.1);">
            <div class="card-header ctheading text-center">
                <h2><i class="fa fa-user-cog"></i> Mi Perfil</h2>
                <span class="badge badge-info">
                    <?php 
                    // Función para mostrar el rol en español
                    $roleLabels = [
                        'master' => 'Master',
                        'ultra-reseller' => 'Ultra Revendedor',
                        'super-reseller' => 'Super Revendedor',
                        'reseller' => 'Revendedor'
                    ];
                    echo $roleLabels[$role] ?? $role;
                    ?>
                </span>
            </div>

            <div class="card-body">
                <form method="post">
                    <div class="form-group">
                        <label>Nombre de Usuario</label>
                        <?php if ($role === 'master'): ?>
                            <input type="text" name="username" class="form-control" 
                                   value="<?= htmlspecialchars($user['username']) ?>" required>
                            <small class="text-muted">Puedes cambiar tu nombre de usuario.</small>
                        <?php else: ?>
                            <input type="text" name="username" class="form-control" 
                                   value="<?= htmlspecialchars($user['username']) ?>" readonly 
                                   style="background-color: #6c757d; cursor: not-allowed;">
                            <small class="text-muted text-warning">
                                <i class="fa fa-lock"></i> Nombre de usuario bloqueado. Solo el Master puede cambiarlo.
                            </small>
                        <?php endif; ?>
                    </div>

                    <div class="form-group">
                        <label>Nueva Contraseña</label>
                        <div class="input-group">
                            <input type="password" name="password" id="password" class="form-control" 
                                   placeholder="Ingresa una nueva contraseña (mínimo 6 caracteres)">
                            <div class="input-group-append">
                                <button class="btn btn-outline-secondary" type="button" id="togglePassword" style="background: #343a40; border-color: #4a5568;">
                                    <i class="fa fa-eye-slash" id="eyeIcon"></i>
                                </button>
                            </div>
                        </div>
                        <small class="text-muted">
                            <?php if ($role === 'master'): ?>
                                Déjalo en blanco para mantener la contraseña actual.
                            <?php else: ?>
                                <i class="fa fa-key"></i> Completa este campo para cambiar tu contraseña. <strong>Mínimo 6 caracteres</strong>
                            <?php endif; ?>
                        </small>
                    </div>

                    <div class="text-center mt-4">
                        <button type="submit" name="submit" class="btn btn-info px-5">
                            <i class="fa fa-save"></i> Guardar Cambios
                        </button>
                    </div>
                </form>
                
                <?php if ($role !== 'master'): ?>
                <div class="alert alert-info mt-3 mb-0 small">
                    <i class="fa fa-info-circle"></i> 
                    <strong>Nota importante:</strong> Como <?= $roleLabels[$role] ?? $role ?>, solo puedes cambiar tu contraseña. 
                    Si necesitas cambiar tu nombre de usuario, contacta al Master del sistema.
                </div>
                <?php endif; ?>
                
                <!-- Recomendación de seguridad -->
                <div class="alert alert-warning mt-3 mb-0 small">
                    <i class="fa fa-shield-alt"></i> 
                    <strong>Recomendación de seguridad:</strong> Utiliza contraseñas seguras con al menos 6 caracteres, combinando letras mayúsculas, minúsculas, números y símbolos.
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// Toggle password visibility
document.getElementById('togglePassword').addEventListener('click', function() {
    const passwordInput = document.getElementById('password');
    const eyeIcon = document.getElementById('eyeIcon');
    
    if (passwordInput.type === 'password') {
        passwordInput.type = 'text';
        eyeIcon.classList.remove('fa-eye-slash');
        eyeIcon.classList.add('fa-eye');
    } else {
        passwordInput.type = 'password';
        eyeIcon.classList.remove('fa-eye');
        eyeIcon.classList.add('fa-eye-slash');
    }
});
</script>

<style>
/* Estilo para el botón del ojo */
.input-group-append .btn {
    border-top-right-radius: 0.35rem;
    border-bottom-right-radius: 0.35rem;
    transition: all 0.3s ease;
}

.input-group-append .btn:hover {
    background: #4a5568 !important;
    border-color: #667eea;
}

.input-group-append .btn i {
    font-size: 1.1rem;
    transition: all 0.3s ease;
}

.input-group-append .btn:hover i {
    color: #667eea;
}

/* Mejorar el estilo del input group */
.input-group {
    margin-bottom: 5px;
}

.form-control:focus {
    border-color: #667eea;
    box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25);
}
</style>

<?php include('includes/footer.php'); ?>