/home/ejrndhmu/tokobiolink.com/register_reseller.php
<?php
require_once 'config/database.php';
require_once 'includes/functions.php';
startSecureSession();

// Get reseller ID from URL parameter
$reseller_id = $_GET['reseller'] ?? null;

if (!$reseller_id) {
    header('Location: login.php');
    exit();
}

// Verify reseller exists and is active
$db = new Database();
$db->query('SELECT * FROM users WHERE id = :id AND role = "reseller" AND status = "active"');
$db->bind(':id', $reseller_id);
$reseller = $db->single();

if (!$reseller) {
    header('Location: 404.php');
    exit();
}

$message = '';
$messageType = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $csrf_token = $_POST['csrf_token'] ?? '';
    
    if (!verifyCSRFToken($csrf_token)) {
        $message = 'Token keamanan tidak valid.';
        $messageType = 'error';
    } else {
        $full_name = sanitizeInput($_POST['full_name'] ?? '');
        $email = sanitizeInput($_POST['email'] ?? '');
        $whatsapp_number = sanitizeInput($_POST['whatsapp_number'] ?? '');
        $password = $_POST['password'] ?? '';
        $confirm_password = $_POST['confirm_password'] ?? '';
        
        // Validation
        if (empty($full_name) || empty($email) || empty($password)) {
            $message = 'Nama lengkap, email, dan password harus diisi.';
            $messageType = 'error';
        } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $message = 'Format email tidak valid.';
            $messageType = 'error';
        } elseif (strlen($password) < 6) {
            $message = 'Password minimal 6 karakter.';
            $messageType = 'error';
        } elseif ($password !== $confirm_password) {
            $message = 'Konfirmasi password tidak cocok.';
            $messageType = 'error';
        } else {
            // Check if email already exists
            $existingUser = getUserByEmail($email);
            if ($existingUser) {
                $message = 'Email sudah terdaftar dalam sistem.';
                $messageType = 'error';
            } else {
                // Generate username from email
                $username = strtolower(explode('@', $email)[0]);
                $originalUsername = $username;
                $counter = 1;
                
                // Make sure username is unique
                while (getUserByUsername($username)) {
                    $username = $originalUsername . $counter;
                    $counter++;
                }
                
                // Create user under this reseller
                $result = createUser($username, $email, $password, $full_name, 'user', $reseller_id, $whatsapp_number, null);
                
                if ($result === 'quota_exceeded') {
                    $message = 'Maaf, quota pendaftaran sudah habis. Silakan hubungi reseller.';
                    $messageType = 'error';
                } elseif ($result) {
                    // Set user status to inactive
                    $db = new Database();
                    $db->query('UPDATE users SET status = "inactive" WHERE id = :id');
                    $db->bind(':id', $result);
                    $db->execute();
                    
                    $message = 'Pendaftaran berhasil! Akun Anda akan diaktivasi setelah verifikasi oleh reseller.';
                    $messageType = 'success';
                    
                    // Clear form data
                    $_POST = [];
                } else {
                    $message = 'Terjadi kesalahan saat mendaftarkan akun. Silakan coba lagi.';
                    $messageType = 'error';
                }
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pendaftaran User - <?= htmlspecialchars($reseller['full_name']) ?></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, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        .card {
            border: none;
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
        }
        .btn-primary {
            background: linear-gradient(45deg, #667eea, #764ba2);
            border: none;
            border-radius: 10px;
            padding: 12px 30px;
            font-weight: 600;
            transition: all 0.3s ease;
        }
        .btn-primary:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(0,0,0,0.2);
        }
        .form-control {
            border-radius: 10px;
            border: 2px solid #e9ecef;
            padding: 12px 15px;
            transition: all 0.3s ease;
        }
        .form-control:focus {
            border-color: #667eea;
            box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25);
        }
        .reseller-info {
            background: linear-gradient(45deg, #f8f9fa, #e9ecef);
            border-radius: 10px;
            padding: 20px;
            margin-bottom: 30px;
        }
    </style>
</head>
<body>
    <div class="container py-5">
        <div class="row justify-content-center">
            <div class="col-md-8 col-lg-6">
                <div class="card">
                    <div class="card-body p-5">

                        <h2 class="text-center mb-4">
                            <i class="fas fa-user-plus text-primary me-2"></i>
                            Daftar Akun Baru
                        </h2>
                        
                        <!-- Messages -->
                        <?php if ($message): ?>
                        <div class="alert alert-<?= $messageType === 'success' ? 'success' : 'danger' ?> alert-dismissible fade show" role="alert">
                            <i class="fas fa-<?= $messageType === 'success' ? 'check-circle' : 'exclamation-circle' ?> me-2"></i>
                            <?= htmlspecialchars($message) ?>
                            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                        </div>
                        <?php endif; ?>
                        
                        <form method="POST" id="registrationForm">
                            <input type="hidden" name="csrf_token" value="<?= generateCSRFToken() ?>">
                            
                            <div class="mb-3">
                                <label for="full_name" class="form-label">
                                    <i class="fas fa-user text-primary me-1"></i>
                                    Nama Lengkap *
                                </label>
                                <input type="text" class="form-control" id="full_name" name="full_name" 
                                       value="<?= htmlspecialchars($_POST['full_name'] ?? '') ?>" 
                                       placeholder="Masukkan nama lengkap" required>
                            </div>
                            
                            <div class="mb-3">
                                <label for="email" class="form-label">
                                    <i class="fas fa-envelope text-primary me-1"></i>
                                    Email *
                                </label>
                                <input type="email" class="form-control" id="email" name="email" 
                                       value="<?= htmlspecialchars($_POST['email'] ?? '') ?>" 
                                       placeholder="contoh@email.com" required>
                                <div class="form-text">Username akan dibuat otomatis dari email</div>
                            </div>
                            
                            <div class="mb-3">
                                <label for="whatsapp_number" class="form-label">
                                    <i class="fab fa-whatsapp text-primary me-1"></i>
                                    Nomor WhatsApp
                                </label>
                                <input type="text" class="form-control" id="whatsapp_number" name="whatsapp_number" 
                                       value="<?= htmlspecialchars($_POST['whatsapp_number'] ?? '') ?>" 
                                       placeholder="628123456789">
                                <div class="form-text">Format: 628xxxxxxxxx (opsional)</div>
                            </div>
                            
                            <div class="mb-3">
                                <label for="password" class="form-label">
                                    <i class="fas fa-lock text-primary me-1"></i>
                                    Password *
                                </label>
                                <input type="password" class="form-control" id="password" name="password" 
                                       placeholder="Minimal 6 karakter" required minlength="6">
                            </div>
                            
                            <div class="mb-4">
                                <label for="confirm_password" class="form-label">
                                    <i class="fas fa-lock text-primary me-1"></i>
                                    Konfirmasi Password *
                                </label>
                                <input type="password" class="form-control" id="confirm_password" name="confirm_password" 
                                       placeholder="Ulangi password" required minlength="6">
                            </div>
                            
                            <div class="alert alert-info mb-4">
                                <i class="fas fa-info-circle me-2"></i>
                                <strong>Informasi:</strong> Akun akan berstatus tidak aktif setelah pendaftaran dan akan diaktivasi oleh reseller setelah verifikasi.
                            </div>
                            
                            <button type="submit" class="btn btn-primary w-100 mb-3">
                                <i class="fas fa-user-plus me-2"></i>
                                Daftar Sekarang
                            </button>
                        </form>
                        
                        <div class="text-center">
                            <p class="text-muted mb-0">Sudah punya akun?</p>
                            <a href="login.php" class="btn btn-outline-primary">
                                <i class="fas fa-sign-in-alt me-1"></i>
                                Login di sini
                            </a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // Form validation
        document.getElementById('registrationForm').addEventListener('submit', function(e) {
            const password = document.getElementById('password').value;
            const confirmPassword = document.getElementById('confirm_password').value;
            
            if (password !== confirmPassword) {
                e.preventDefault();
                alert('Konfirmasi password tidak cocok!');
                return false;
            }
            
            // Show loading state
            const submitBtn = this.querySelector('button[type="submit"]');
            submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i>Memproses...';
            submitBtn.disabled = true;
        });
        
        // Phone number formatting
        document.getElementById('whatsapp_number').addEventListener('input', function(e) {
            let value = e.target.value.replace(/\D/g, '');
            if (value.startsWith('08')) {
                value = '628' + value.substring(2);
            }
            e.target.value = value;
        });
    </script>
</body>
</html>