@vite(['resources/css/app.css', 'resources/js/app.js'])

Candidate Live Assessment Portal

Proctored IDE & Code Submissions
@if(Auth::user()->isAdmin()) Control Panel @endif Onboarding Hub User Portal
@csrf Logout
@if(session('success'))
{{ session('success') }}
@endif

Global Admin Proctoring & System Settings

Master control panel for candidate assessment rules, system screen capturing, and module toggles
ADMIN CONTROL PANEL
@csrf
Candidate System Screenshot Capture
Captures candidate system desktop screen automatically on call start & tab switches. Admin can stop taking screenshots anytime across all candidates.
{{ \App\Models\Setting::get('enable_candidate_screenshots', '1') === '1' ? '🟢 ENABLED (Active)' : '🔴 STOPPED / DISABLED' }} @if(Auth::user() && Auth::user()->isAdmin()) @endif
@csrf
Candidate Provisioning & Onboarding Module
Master toggle to enable/disable automated candidate provisioning, onboarding checklists, and 1-click revocation.
{{ \App\Models\Setting::get('onboarding_enabled', '1') === '1' ? '🟢 ENABLED' : '🔴 DISABLED' }} @if(Auth::user() && Auth::user()->isAdmin()) @endif

Live Interview Assessments

Temporary Candidate Access, Real-Time Proctored IDE, and Unique Code Records
Schedule Candidate Interview
@forelse($interviews as $inv) @php $logs = $inv->proctor_logs ?? []; $tabSwitches = count(array_filter($logs, fn($l) => ($l['type'] ?? '') === 'tab_switch')); $focusLost = count(array_filter($logs, fn($l) => ($l['type'] ?? '') === 'focus_lost')); $gazeAlerts = count(array_filter($logs, fn($l) => in_array($l['type'] ?? '', ['gaze_anomaly', 'gaze_fixed_staring']))); $lowerGaze = count(array_filter($logs, fn($l) => ($l['type'] ?? '') === 'gaze_lower_device')); $questionRepeat = count(array_filter($logs, fn($l) => in_array($l['type'] ?? '', ['question_repeat_lower', 'question_repetition']))); $externalAi = count(array_filter($logs, fn($l) => ($l['type'] ?? '') === 'external_ai_detected')); @endphp @empty @endforelse
Candidate & Temp Pass Unique Submission ID Status & Validity Language Proctoring Alerts Review & Actions
{{ $inv->candidate_name }}
{{ $inv->candidate_email }} • {{ $inv->candidate_phone }}
Temp Pass: {{ $inv->temp_password }}
{{ $inv->submission_unique_id }} @if($inv->isExpired()) EXPIRED @elseif($inv->status === 'completed') COMPLETED @elseif($inv->call_status === 'active') CALL IN PROGRESS @elseif($inv->isActiveTimeline()) TIMELINE LIVE @else SCHEDULED @endif
Timeline: {{ ($inv->scheduled_at ?? $inv->created_at)->format('M d, H:i') }} – {{ $inv->expires_at->format('H:i') }}
{{ $inv->language }}
Tab Switches: {{ $tabSwitches }} Focus Loss / Overlay: {{ $focusLost }} Eye Gaze Anomaly: {{ $gazeAlerts }} @if($lowerGaze > 0) Lower Gaze (>10s): {{ $lowerGaze }} @endif @if($questionRepeat > 0) Question Repetition: {{ $questionRepeat }} @endif @if($externalAi > 0) Parakeet / External AI: {{ $externalAi }} @endif
PDF Report @if($inv->call_status === 'active') Join Active Call @else Join Call @endif
No candidate interview sessions found. Click "+ Schedule Candidate Interview" above to create one.
@csrf
@foreach($interviewers as $usr) @endforeach
Cancel Create Session & Password