diff --git a/public/create_test_account.php b/public/create_test_account.php
new file mode 100644
index 0000000..57d25f9
--- /dev/null
+++ b/public/create_test_account.php
@@ -0,0 +1,83 @@
+beginTransaction();
+
+ // 1. Generate UUIDs
+ $tenantId = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+ mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
+ );
+
+ $userId = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+ mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
+ );
+
+ // 2. Test Account Data
+ $tenantName = "مكتب المراجعة التجريبي";
+ $tenantEmail = "reviewer@musadaq.jo";
+
+ $userName = "App Reviewer";
+ $userEmail = "reviewer@musadaq.jo";
+ $userPassword = "Reviewer2026!";
+
+ // 3. Encrypt data
+ $encryptedTenantName = Encryption::encrypt($tenantName);
+ $encryptedTenantEmail = Encryption::encrypt($tenantEmail);
+
+ $encryptedUserName = Encryption::encrypt($userName);
+ $encryptedUserEmail = Encryption::encrypt($userEmail);
+ $emailHash = hash('sha256', strtolower($userEmail));
+ $passwordHash = password_hash($userPassword, PASSWORD_DEFAULT);
+
+ // 4. Delete existing if any (prevent duplicates on re-run)
+ $stmt = $db->prepare("DELETE FROM users WHERE email_hash = ?");
+ $stmt->execute([$emailHash]);
+
+ // 5. Insert Tenant
+ $stmt = $db->prepare("INSERT INTO tenants (id, name, email, status, created_at) VALUES (?, ?, ?, 'active', NOW())");
+ $stmt->execute([
+ $tenantId,
+ $encryptedTenantName,
+ $encryptedTenantEmail
+ ]);
+
+ // 6. Insert User (Manager)
+ $stmtUser = $db->prepare("INSERT INTO users (id, tenant_id, name, email, email_hash, password_hash, role, created_at) VALUES (?, ?, ?, ?, ?, ?, 'admin', NOW())");
+ $stmtUser->execute([
+ $userId,
+ $tenantId,
+ $encryptedUserName,
+ $encryptedUserEmail,
+ $emailHash,
+ $passwordHash
+ ]);
+
+ // 7. Insert Gamification Profile (Optional but good for testing dashboard)
+ $stmtProfile = $db->prepare("INSERT INTO user_profiles (user_id, points, current_level, rank_title) VALUES (?, 1500, 2, 'مُحاسب مبتدئ') ON DUPLICATE KEY UPDATE points=1500");
+ $stmtProfile->execute([$userId]);
+
+ $db->commit();
+ echo "
✅ تم إنشاء الحساب التجريبي بنجاح!
";
+ echo "البريد الإلكتروني: $userEmail
";
+ echo "كلمة المرور: $userPassword
";
+
+ // Delete this file for security
+ @unlink(__FILE__);
+
+} catch (\Exception $e) {
+ $db->rollBack();
+ echo "❌ Error: " . htmlspecialchars($e->getMessage()) . "
";
+}
diff --git a/scripts/create_test_account.php b/scripts/create_test_account.php
new file mode 100644
index 0000000..14f3a03
--- /dev/null
+++ b/scripts/create_test_account.php
@@ -0,0 +1,82 @@
+beginTransaction();
+
+ // 1. Generate UUIDs
+ $tenantId = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+ mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
+ );
+
+ $userId = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+ mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
+ );
+
+ // 2. Test Account Data
+ $tenantName = "مكتب المراجعة التجريبي";
+ $tenantEmail = "reviewer@musadaq.jo";
+
+ $userName = "App Reviewer";
+ $userEmail = "reviewer@musadaq.jo";
+ $userPassword = "Reviewer2026!";
+
+ // 3. Encrypt data
+ $encryptedTenantName = Encryption::encrypt($tenantName);
+ $encryptedTenantEmail = Encryption::encrypt($tenantEmail);
+
+ $encryptedUserName = Encryption::encrypt($userName);
+ $encryptedUserEmail = Encryption::encrypt($userEmail);
+ $emailHash = hash('sha256', strtolower($userEmail));
+ $passwordHash = password_hash($userPassword, PASSWORD_DEFAULT);
+
+ // 4. Delete existing if any (prevent duplicates on re-run)
+ $stmt = $db->prepare("DELETE FROM users WHERE email_hash = ?");
+ $stmt->execute([$emailHash]);
+
+ // 5. Insert Tenant
+ $stmt = $db->prepare("INSERT INTO tenants (id, name, email, status, created_at) VALUES (?, ?, ?, 'active', NOW())");
+ $stmt->execute([
+ $tenantId,
+ $encryptedTenantName,
+ $encryptedTenantEmail
+ ]);
+
+ // 6. Insert User (Manager)
+ $stmtUser = $db->prepare("INSERT INTO users (id, tenant_id, name, email, email_hash, password_hash, role, created_at) VALUES (?, ?, ?, ?, ?, ?, 'admin', NOW())");
+ $stmtUser->execute([
+ $userId,
+ $tenantId,
+ $encryptedUserName,
+ $encryptedUserEmail,
+ $emailHash,
+ $passwordHash
+ ]);
+
+ // 7. Insert Gamification Profile (Optional but good for testing dashboard)
+ $stmtProfile = $db->prepare("INSERT INTO user_profiles (user_id, points, current_level, rank_title) VALUES (?, 1500, 2, 'مُحاسب مبتدئ') ON DUPLICATE KEY UPDATE points=1500");
+ $stmtProfile->execute([$userId]);
+
+ $db->commit();
+ echo "✅ Test Account Created Successfully!\n";
+ echo "=====================================\n";
+ echo "Email: $userEmail\n";
+ echo "Password: $userPassword\n";
+ echo "=====================================\n";
+
+} catch (\Exception $e) {
+ $db->rollBack();
+ echo "❌ Error: " . $e->getMessage() . "\n";
+}