prepare("SELECT * FROM admin_users WHERE username = ? AND status = 'active'"); $stmt->execute([$username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password'])) { $_SESSION['admin_id'] = $user['id']; $_SESSION['admin_username'] = $user['username']; $_SESSION['admin_email'] = $user['email']; $_SESSION['admin_role'] = $user['role']; $_SESSION['admin_name'] = $user['full_name']; $updateStmt = $pdo->prepare("UPDATE admin_users SET last_login = NOW() WHERE id = ?"); $updateStmt->execute([$user['id']]); logActivity($user['id'], 'login', 'User logged in successfully'); header('Location: index.php'); exit; } else { $error = 'Invalid username or password'; } } catch (Exception $e) { error_log("Login error: " . $e->getMessage()); $error = 'An error occurred. Please try again.'; } } } // ============ SHOW LOGIN FORM ============ ?> Login - Relevant Reflex Admin

RELEVANT REFLEX

Admin Portal

🛠

Panel Management System

Manage members, projects, clients, invoices, fieldwork, and survey operations from a single unified dashboard.

Member & Panel Management
Client & Project Operations
Invoice & Finance Tracking
Fieldwork & Survey Monitoring

Welcome Back!

🛡

This is a secure admin area. All login attempts are logged and monitored. Unauthorized access is strictly prohibited.

Need help? Contact Support
0, 'members_active' => 0, 'members_verified' => 0, 'members_inactive' => 0, 'members_new' => 0, 'members_new_verified' => 0, 'members_mobile_verified' => 0, // Points economy 'points_circulation' => 0, 'points_total_earned' => 0, 'points_total_redeemed' => 0, 'points_earned_period' => 0, 'points_redeemed_period' => 0, // Redemptions 'redemptions_pending' => 0, 'redemptions_completed' => 0, 'redemptions_total' => 0, 'redemptions_pending_value' => 0, 'redemptions_period' => 0, 'redemptions_paid_period' => 0, // Tickets 'tickets_total' => 0, 'tickets_open' => 0, 'tickets_pending' => 0, 'tickets_resolved' => 0, 'tickets_closed' => 0, 'tickets_member' => 0, 'tickets_partner' => 0, 'tickets_client' => 0, 'tickets_period' => 0, // Affiliates 'affiliates_total' => 0, 'affiliates_active' => 0, 'affiliates_total_signups' => 0, 'affiliates_verified_signups' => 0, 'affiliates_total_commission' => 0, 'affiliates_commission_balance' => 0, 'affiliates_total_rewards_paid' => 0, 'affiliates_clicks_period' => 0, 'affiliates_signups_period' => 0, 'partner_redemptions_pending' => 0, 'partner_redemptions_pending_value' => 0, // Clients 'clients_total' => 0, 'clients_active' => 0, // Projects 'projects_total' => 0, 'projects_live' => 0, 'projects_created' => 0, 'projects_targeted' => 0, 'projects_onhold' => 0, 'projects_closed' => 0, 'projects_period' => 0, // Survey URLs 'urls_total' => 0, 'urls_available' => 0, 'urls_sent' => 0, 'urls_complete' => 0, 'urls_screenout' => 0, 'urls_quotafull' => 0, 'completes_period' => 0, // Member Availability (non-closed projects) 'avail_available' => 0, 'avail_selected' => 0, 'avail_assigned' => 0, 'avail_invited' => 0, 'avail_started' => 0, 'avail_completed' => 0, 'avail_screenout' => 0, 'avail_other_term' => 0, 'avail_live_projects' => 0, // Finance 'invoices_total' => 0, 'invoices_invoiced' => 0, 'invoices_paid' => 0, 'invoices_due' => 0, 'invoices_overdue' => 0, 'invoices_critical' => 0, 'revenue_total_inr' => 0, 'revenue_paid_inr' => 0, 'revenue_outstanding_inr' => 0, 'revenue_invoiced_inr' => 0, 'revenue_due_inr' => 0, 'revenue_overdue_inr' => 0, 'revenue_critical_inr' => 0, 'revenue_period_inr' => 0, // Admin 'admins_active' => 0, ]; $recent_activities = $recent_tickets = $recent_members_list = $recent_projects = []; // Get DB connections $pdo = null; $panelPdo = null; try { $pdo = getDBConnection(); $pdo->exec("SET time_zone = '+05:30'"); } catch (Exception $e) { error_log("Dashboard shop DB error: " . $e->getMessage()); } try { $panelPdo = getPanelDBConnection(); $panelPdo->exec("SET time_zone = '+05:30'"); } catch (Exception $e) { error_log("Dashboard panel DB error: " . $e->getMessage()); } // ─── MEMBERS ─── if ($panelPdo) { try { $d['members_total'] = (int)$panelPdo->query("SELECT COUNT(*) FROM users")->fetchColumn(); $d['members_active'] = (int)$panelPdo->query("SELECT COUNT(*) FROM users WHERE status='active'")->fetchColumn(); $d['members_verified'] = (int)$panelPdo->query("SELECT COUNT(*) FROM users WHERE email_verified=1")->fetchColumn(); $d['members_inactive'] = (int)$panelPdo->query("SELECT COUNT(*) FROM users WHERE status='inactive'")->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COUNT(*) FROM users WHERE created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['members_new'] = (int)$stmt->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COUNT(*) FROM users WHERE email_verified=1 AND created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['members_new_verified'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard members error: " . $e->getMessage()); } try { $d['members_mobile_verified'] = (int)$panelPdo->query("SELECT COUNT(*) FROM mobile_verifications WHERE is_verified=1")->fetchColumn(); } catch (Exception $e) { /* table may not exist */ } } // ─── POINTS ECONOMY ─── if ($panelPdo) { try { $d['points_circulation'] = (int)$panelPdo->query("SELECT COALESCE(SUM(points),0) FROM user_points")->fetchColumn(); $d['points_total_earned'] = (int)$panelPdo->query("SELECT COALESCE(SUM(total_earned),0) FROM user_points")->fetchColumn(); $d['points_total_redeemed'] = (int)$panelPdo->query("SELECT COALESCE(SUM(total_redeemed),0) FROM user_points")->fetchColumn(); } catch (Exception $e) { error_log("Dashboard user_points error: " . $e->getMessage()); } try { $stmt = $panelPdo->prepare("SELECT COALESCE(SUM(amount),0) FROM point_transactions WHERE type='credit' AND created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['points_earned_period'] = (int)$stmt->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COALESCE(SUM(amount),0) FROM point_transactions WHERE type='debit' AND created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['points_redeemed_period'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard point_transactions error: " . $e->getMessage()); } } // ─── REDEMPTIONS ─── if ($panelPdo) { try { $d['redemptions_pending'] = (int)$panelPdo->query("SELECT COUNT(*) FROM redemption_requests WHERE status='pending'")->fetchColumn(); $d['redemptions_completed'] = (int)$panelPdo->query("SELECT COUNT(*) FROM redemption_requests WHERE status='completed'")->fetchColumn(); $d['redemptions_total'] = (int)$panelPdo->query("SELECT COUNT(*) FROM redemption_requests")->fetchColumn(); $d['redemptions_pending_value'] = (float)$panelPdo->query("SELECT COALESCE(SUM(amount),0) FROM redemption_requests WHERE status='pending'")->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COUNT(*) FROM redemption_requests WHERE created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['redemptions_period'] = (int)$stmt->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COALESCE(SUM(amount),0) FROM redemption_requests WHERE status='completed' AND processed_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['redemptions_paid_period'] = (float)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard redemptions error: " . $e->getMessage()); } } // ─── SUPPORT TICKETS ─── if ($panelPdo) { try { $d['tickets_total'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets")->fetchColumn(); $d['tickets_open'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE status='open'")->fetchColumn(); $d['tickets_pending'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE status='pending'")->fetchColumn(); $d['tickets_resolved'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE status='resolved'")->fetchColumn(); $d['tickets_closed'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE status='closed'")->fetchColumn(); $d['tickets_member'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE sender_type='member'")->fetchColumn(); $d['tickets_partner'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE sender_type='partner'")->fetchColumn(); $d['tickets_client'] = (int)$panelPdo->query("SELECT COUNT(*) FROM support_tickets WHERE sender_type='client'")->fetchColumn(); $stmt = $panelPdo->prepare("SELECT COUNT(*) FROM support_tickets WHERE created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['tickets_period'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard tickets error: " . $e->getMessage()); } } // ─── AFFILIATES / PARTNERS ─── if ($pdo) { try { $d['affiliates_total'] = (int)$pdo->query("SELECT COUNT(*) FROM affiliates")->fetchColumn(); $d['affiliates_active'] = (int)$pdo->query("SELECT COUNT(*) FROM affiliates WHERE status='active'")->fetchColumn(); $d['affiliates_total_signups'] = (int)$pdo->query("SELECT COALESCE(SUM(total_signups),0) FROM affiliates")->fetchColumn(); $d['affiliates_verified_signups'] = (int)$pdo->query("SELECT COALESCE(SUM(total_verified_signups),0) FROM affiliates")->fetchColumn(); $d['affiliates_total_commission'] = (float)$pdo->query("SELECT COALESCE(SUM(total_commission_earned),0) FROM affiliates")->fetchColumn(); $d['affiliates_commission_balance'] = (float)$pdo->query("SELECT COALESCE(SUM(commission_balance),0) FROM affiliates")->fetchColumn(); $d['affiliates_total_rewards_paid'] = (float)$pdo->query("SELECT COALESCE(SUM(total_rewards_paid),0) FROM affiliates")->fetchColumn(); } catch (Exception $e) { error_log("Dashboard affiliates error: " . $e->getMessage()); } try { $stmt = $pdo->prepare("SELECT COUNT(*) FROM affiliate_signups WHERE clicked_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['affiliates_clicks_period'] = (int)$stmt->fetchColumn(); $stmt = $pdo->prepare("SELECT COUNT(*) FROM affiliate_signups WHERE signup_completed=1 AND signed_up_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['affiliates_signups_period'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard affiliate_signups error: " . $e->getMessage()); } try { $d['partner_redemptions_pending'] = (int)$pdo->query("SELECT COUNT(*) FROM partner_redemptions WHERE status='pending'")->fetchColumn(); $d['partner_redemptions_pending_value'] = (float)$pdo->query("SELECT COALESCE(SUM(amount),0) FROM partner_redemptions WHERE status='pending'")->fetchColumn(); } catch (Exception $e) { /* partner_redemptions table may not exist */ } } // ─── CLIENTS ─── if ($pdo) { try { $d['clients_total'] = (int)$pdo->query("SELECT COUNT(*) FROM clients")->fetchColumn(); $d['clients_active'] = (int)$pdo->query("SELECT COUNT(*) FROM clients WHERE status='active'")->fetchColumn(); } catch (Exception $e) { error_log("Dashboard clients error: " . $e->getMessage()); } } // ─── PROJECTS ─── if ($pdo) { try { $d['projects_total'] = (int)$pdo->query("SELECT COUNT(*) FROM projects")->fetchColumn(); $d['projects_live'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status='Live'")->fetchColumn(); $d['projects_created'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status='Created'")->fetchColumn(); $d['projects_targeted'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status='Targeted'")->fetchColumn(); $d['projects_onhold'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status='On hold'")->fetchColumn(); $d['projects_closed'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status='Closed'")->fetchColumn(); $stmt = $pdo->prepare("SELECT COUNT(*) FROM projects WHERE created_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['projects_period'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard projects error: " . $e->getMessage()); } } // ─── SURVEY URLs ─── if ($pdo) { try { $d['urls_total'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls")->fetchColumn(); $d['urls_available'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls WHERE status='available'")->fetchColumn(); $d['urls_sent'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls WHERE status='sent'")->fetchColumn(); $d['urls_complete'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls WHERE status='complete'")->fetchColumn(); $d['urls_screenout'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls WHERE status IN ('earlyscreenout','latescreenout')")->fetchColumn(); $d['urls_quotafull'] = (int)$pdo->query("SELECT COUNT(*) FROM survey_urls WHERE status='quotafull'")->fetchColumn(); $stmt = $pdo->prepare("SELECT COUNT(*) FROM survey_urls WHERE status='complete' AND completed_at BETWEEN ? AND ?"); $stmt->execute([$dateFromSQL, $dateToSQL]); $d['completes_period'] = (int)$stmt->fetchColumn(); } catch (Exception $e) { error_log("Dashboard survey_urls error: " . $e->getMessage()); } } // ─── MEMBER AVAILABILITY (non-closed projects only) ─── if ($pdo) { try { // Count non-closed projects $d['avail_live_projects'] = (int)$pdo->query("SELECT COUNT(*) FROM projects WHERE status NOT IN ('Closed')")->fetchColumn(); // Selected: distinct members in selection_members for non-closed projects $d['avail_selected'] = (int)$pdo->query(" SELECT COUNT(DISTINCT sm.user_id) FROM selection_members sm JOIN project_selections ps ON sm.selection_id = ps.id JOIN projects p ON ps.project_id = p.id WHERE p.status NOT IN ('Closed') ")->fetchColumn(); // Survey URL stage counts (distinct members per stage, non-closed projects only) $urlStages = $pdo->query(" SELECT COUNT(DISTINCT CASE WHEN su.status = 'assigned' THEN su.sent_to_user_id END) as assigned_members, COUNT(DISTINCT CASE WHEN su.status = 'sent' THEN su.sent_to_user_id END) as sent_members, COUNT(DISTINCT CASE WHEN su.status = 'clicked' THEN su.sent_to_user_id END) as started_members, COUNT(DISTINCT CASE WHEN su.status = 'complete' THEN su.sent_to_user_id END) as completed_members, COUNT(DISTINCT CASE WHEN su.status IN ('earlyscreenout','latescreenout') THEN su.sent_to_user_id END) as screenout_members, COUNT(DISTINCT CASE WHEN su.status IN ('quotafull','timeout','partial') THEN su.sent_to_user_id END) as other_members FROM survey_urls su JOIN projects p ON su.project_id = p.project_id WHERE p.status NOT IN ('Closed') AND su.sent_to_user_id IS NOT NULL ")->fetch(); if ($urlStages) { $d['avail_assigned'] = (int)($urlStages['assigned_members'] ?? 0); $d['avail_invited'] = (int)($urlStages['sent_members'] ?? 0); $d['avail_started'] = (int)($urlStages['started_members'] ?? 0); $d['avail_completed'] = (int)($urlStages['completed_members'] ?? 0); $d['avail_screenout'] = (int)($urlStages['screenout_members'] ?? 0); $d['avail_other_term'] = (int)($urlStages['other_members'] ?? 0); } } catch (Exception $e) { error_log("Dashboard availability error: " . $e->getMessage()); } // Available: active+verified members NOT in any non-closed project if ($panelPdo) { try { $totalVerifiedActive = (int)$panelPdo->query("SELECT COUNT(*) FROM users WHERE status='active' AND email_verified=1")->fetchColumn(); $d['avail_available'] = max(0, $totalVerifiedActive - $d['avail_selected']); } catch (Exception $e) { error_log("Dashboard avail_available error: " . $e->getMessage()); } } } // ─── INVOICES / FINANCE (multi-currency → INR) ─── $forexRates = ['INR' => 1.0, 'USD' => 86.50, 'EUR' => 93.00]; if ($pdo) { try { try { $ctx = stream_context_create(['http' => ['timeout' => 3]]); $rateJson = @file_get_contents('https://api.exchangerate-api.com/v4/latest/USD', false, $ctx); if ($rateJson) { $rateData = json_decode($rateJson, true); if (!empty($rateData['rates']['INR'])) { $usdToInr = (float)$rateData['rates']['INR']; $forexRates['USD'] = $usdToInr; if (!empty($rateData['rates']['EUR'])) { $forexRates['EUR'] = $usdToInr / (float)$rateData['rates']['EUR']; } } } } catch (Exception $e) { /* use fallback rates */ } $d['invoices_total'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices")->fetchColumn(); $d['invoices_invoiced'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices WHERE status='invoiced'")->fetchColumn(); $d['invoices_paid'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices WHERE status='paid'")->fetchColumn(); $d['invoices_due'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices WHERE status='due'")->fetchColumn(); $d['invoices_overdue'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices WHERE status='overdue'")->fetchColumn(); $d['invoices_critical'] = (int)$pdo->query("SELECT COUNT(*) FROM invoices WHERE status IN ('critical','banned')")->fetchColumn(); $amtStmt = $pdo->query(" SELECT status, currency, SUM(total_amount) as amt FROM invoices GROUP BY status, currency "); $amtRows = $amtStmt->fetchAll(); $statusMap = [ 'invoiced' => 'revenue_invoiced_inr', 'paid' => 'revenue_paid_inr', 'due' => 'revenue_due_inr', 'overdue' => 'revenue_overdue_inr', 'critical' => 'revenue_critical_inr', 'banned' => 'revenue_critical_inr', ]; foreach ($amtRows as $row) { $cur = $row['currency'] ?? 'INR'; $rate = $forexRates[$cur] ?? 1.0; $inr = (float)$row['amt'] * $rate; $key = $statusMap[$row['status']] ?? null; if ($key) $d[$key] += $inr; $d['revenue_total_inr'] += $inr; } $d['revenue_outstanding_inr'] = $d['revenue_total_inr'] - $d['revenue_paid_inr']; $stmt = $pdo->prepare("SELECT currency, SUM(total_amount) as amt FROM invoices WHERE created_at BETWEEN ? AND ? GROUP BY currency"); $stmt->execute([$dateFromSQL, $dateToSQL]); foreach ($stmt->fetchAll() as $row) { $rate = $forexRates[$row['currency'] ?? 'INR'] ?? 1.0; $d['revenue_period_inr'] += (float)$row['amt'] * $rate; } } catch (Exception $e) { /* invoices table may not exist */ } } // ─── ADMIN USERS ─── if ($pdo) { try { $d['admins_active'] = (int)$pdo->query("SELECT COUNT(*) FROM admin_users WHERE status='active'")->fetchColumn(); } catch (Exception $e) { /* */ } } // ─── RECENT ACTIVITIES ─── if ($pdo) { try { $activitiesStmt = $pdo->query(" SELECT al.*, au.full_name FROM admin_activity_log al LEFT JOIN admin_users au ON al.admin_id = au.id ORDER BY al.created_at DESC LIMIT 15 "); $recent_activities = $activitiesStmt->fetchAll(); } catch (Exception $e) { /* */ } } // ─── RECENT TICKETS ─── if ($panelPdo) { try { $recentTicketsStmt = $panelPdo->query("SELECT * FROM support_tickets ORDER BY updated_at DESC LIMIT 8"); $recent_tickets = $recentTicketsStmt->fetchAll(); } catch (Exception $e) { /* */ } } // ─── RECENT MEMBERS ─── if ($panelPdo) { try { $recentMembersStmt = $panelPdo->query("SELECT id, email, gender, email_verified, status, created_at FROM users ORDER BY created_at DESC LIMIT 8"); $recent_members_list = $recentMembersStmt->fetchAll(); } catch (Exception $e) { /* */ } } // ─── RECENT PROJECTS ─── if ($pdo) { try { $recentProjectsStmt = $pdo->query(" SELECT p.*, c.company_name as client_name FROM projects p LEFT JOIN clients c ON p.client_id = c.id ORDER BY p.updated_at DESC LIMIT 8 "); $recent_projects = $recentProjectsStmt->fetchAll(); } catch (Exception $e) { /* */ } } // Helper functions function fmtIST($dt, $fmt = 'd M Y, h:i A') { if (!$dt) return '—'; try { $date = new DateTime($dt, new DateTimeZone('Asia/Kolkata')); return $date->format($fmt); } catch (Exception $e) { return date($fmt, strtotime($dt)); } } function fmtISTDate($dt) { return fmtIST($dt, 'd M Y'); } function fmtISTTime($dt) { return fmtIST($dt, 'h:i A'); } function fmtINR($v) { return '₹' . number_format((float)$v, 2); } function fmtNum($v) { return number_format((int)$v); } include 'includes/header.php'; ?>

Dashboard

·

Today 7D 30D 90D MTD YTD | to
Showing data for
0) $alerts[] = ['warn', '💰 ' . fmtNum($d['redemptions_pending']) . ' pending member redemptions (' . fmtINR($d['redemptions_pending_value']) . ')', 'https://relevantreflex.com/support']; if (($d['partner_redemptions_pending'] ?? 0) > 0) $alerts[] = ['warn', '🤝 ' . fmtNum($d['partner_redemptions_pending']) . ' pending partner redemptions (' . fmtINR($d['partner_redemptions_pending_value']) . ')', 'https://relevantreflex.com/support']; if (($d['tickets_open'] ?? 0) > 0) $alerts[] = ['info', '🎫 ' . fmtNum($d['tickets_open']) . ' open support tickets', 'https://relevantreflex.com/support']; if (($d['projects_live'] ?? 0) > 0) $alerts[] = ['info', '🔴 ' . fmtNum($d['projects_live']) . ' live projects', 'https://relevantreflex.com/clients/projects.php']; ?>
👥 Panel Members
View All →
Total Members
+ in period
Active
0 ? round($d['members_active']/$d['members_total']*100) : 0; ?>% of total
Email Verified
+ in period
Mobile Verified
Inactive
📋 Member Availability non-closed project
Available
Verified active, not in any live project
Selected
Added to project selections
Assigned
URL assigned, not yet sent
Invited
Email sent
Started
Clicked survey link
Completed
Survey completed
Screen Out
Early / late screenout
Other Term.
Quota full, timeout, partial
Excludes closed projects • Counts distinct members
💎 Points Economy
In Circulation
Unredeemed balance
Lifetime Earned
+ in period
Lifetime Redeemed
in period
Pending Redemptions
value
Period Redemptions
paid out
🎫 Support Tickets
Manage →
Open
+ in period
Pending
Resolved
Closed
Total
M: P: C:
🤝 Affiliates / Partners
View All →
Active Affiliates
of total
Total Signups
+ in period
Verified Signups
0 ? round($d['affiliates_verified_signups']/$d['affiliates_total_signups']*100) : 0; ?>% conversion
Clicks (Period)
Commission Earned
Balance:
Rewards Paid
Pending Redemptions
to pay
📊 Clients, Projects & Fieldwork
Clients →
Active Clients
of total
Total Projects
+ in period
Live Projects
On Hold
Closed
Survey URLs
available
Completes
+ in period
Screen Outs
💰 Finance USD: ₹ · EUR: ₹
View Finance →
Total Invoiced
invoice · + in period
Paid
invoice
Outstanding
unpaid
Invoiced
Due
Overdue
Critical / Banned
Recent Projects View All →
ProjectClientStatusUpdated

'green','Closed'=>'gray','On hold'=>'amber','Created'=>'blue','Targeted'=>'blue'][$p['status']] ?? 'gray'; ?>

No projects yet

Recent Support Tickets Manage →
TicketTypeStatusUpdated

'red','pending'=>'amber','resolved'=>'green','closed'=>'gray'][$t['status']] ?? 'gray'; ?>

No tickets yet

Recent Members View All →
EmailGenderStatusJoined

No members yet

Admin Activity Log
AdminActionTime (IST)

No activity yet

🖥️ System
Admin Users: active Admin DB: u752449863_rrshop Panel DB: u752449863_rrpanel PHP: Server Time (IST): Timezone: