@extends('layouts.app') @section('title', auth()->user()->unit_type === 'marketing' ? 'Laporan Consumer Contact' : 'Laporan Panel Test') @section('content')

Laporan & Grafik

{{ auth()->user()->unit_type === 'marketing' ? 'Analisis hasil consumer contact' : 'Analisis hasil panel test' }}

{{-- KOLOM KIRI: Daftar Panel Test --}}
{{ auth()->user()->unit_type === 'marketing' ? 'Daftar Consumer Contact' : 'Daftar Panel Test' }}
{{ $panelTests->count() }}
{{-- KOLOM KANAN: Detail Laporan --}}
@if($report) {{-- Header laporan --}}
@if($report['panelTest']->test_number) {{ $report['panelTest']->test_number }} @endif
{{ $report['panelTest']->title }}
{{ $report['panelTest']->product->name }} {{ $report['panelTest']->test_date->format('d M Y') }} @if($report['panelTest']->location) {{ $report['panelTest']->location }} @endif
Excel Analisis
{{-- Summary Cards --}}
Total Responden
{{ $report['totalRespondents'] }}
{{ isset($report) && $report['panelTest']->unit_type === 'divisi' ? 'Total Surveyor' : 'Total SPG' }}
{{ $report['spgList']->count() }}
Avg Rating
@php $ratingStats = $report['questionStats']->where('type','rating'); $avgAll = $ratingStats->count() > 0 ? number_format($ratingStats->avg('avg'), 1) : '-'; @endphp
{{ $avgAll }}
Sampel
{{ $report['panelTest']->samples->count() }}
{{-- Overview Charts --}}
Gender
@php $lakiLaki = collect($report['respondents'])->where('gender','Laki-laki')->count(); $perempuan = collect($report['respondents'])->where('gender','Perempuan')->count(); @endphp
Per {{ isset($report) && $report['panelTest']->unit_type === 'divisi' ? 'Surveyor' : 'SPG' }}
Generasi
@php $genData = collect($report['respondents']) ->groupBy('generation') ->map->count() ->sortDesc(); @endphp
{{-- Rekap per SPG --}}
Rekap per {{ isset($report) && $report['panelTest']->unit_type === 'divisi' ? 'Surveyor' : 'SPG' }}
@foreach($report['spgStats'] as $i => $stat) @endforeach
# Nama {{ isset($report) && $report['panelTest']->unit_type === 'divisi' ? 'Surveyor' : 'SPG' }} Responden Avg Rating Detail
{{ $i + 1 }}
{{ strtoupper(substr($stat['spg']->name, 0, 1)) }}
{{ $stat['spg']->name }}
{{ $stat['total'] }} @if($stat['avg_rating'] > 0) ⭐ {{ $stat['avg_rating'] }} @else - @endif
@if($report['panelTest']->type === 'internal') @else @endif @foreach($stat['respondents'] as $ri => $resp) @if($report['panelTest']->type === 'internal') @else @endif @endforeach
# NamaPernerArea Promotion SPGenerasi Gender Jam
{{ $ri + 1 }} {{ $resp['name'] ?? '-' }} {{ $resp['perner'] ?? '-' }} {{ $resp['area_promotion_name'] ?? '-' }} {{ $resp['sp_name'] ?? '-' }}{{ $resp['generation'] ?? '-' }} {{ $resp['gender'] ?? '-' }} {{ $resp['time'] ? $resp['time']->format('H:i') : '-' }}
{{-- Grafik per Pertanyaan --}}
Grafik Hasil @if($spgFilter) Filter: {{ $report['spgList']->firstWhere('id', $spgFilter)?->name }} @endif
@foreach($report['questionStats'] as $i => $stat)
{{ $i + 1 }}
{{ $stat['question'] }}
{{ $stat['type'] }}
@if($stat['type'] === 'rating')
{{ $stat['avg'] }}
@for($s = 1; $s <= 5; $s++) @endfor
{{ $stat['count'] }} jawaban
@elseif($stat['type'] === 'yes_no') @php $ya = $stat['answers']->filter(fn($a) => $a === 'Ya')->count(); $tidak = $stat['answers']->filter(fn($a) => $a === 'Tidak')->count(); $total = $ya + $tidak; @endphp
πŸ‘ Ya {{ $ya }} ({{ $total > 0 ? round($ya/$total*100) : 0 }}%)
πŸ‘Ž Tidak {{ $tidak }} ({{ $total > 0 ? round($tidak/$total*100) : 0 }}%)
@elseif($stat['type'] === 'multiple_choice') @php $counts = $stat['answers']->countBy(); @endphp
@else
@forelse($stat['answers'] as $ans)
{{ $ans }}
@empty

Belum ada jawaban

@endforelse
@endif
@endforeach
{{-- ===== TABEL DETAIL RESPONDEN ===== --}}
Detail Responden
{{ $report['totalRespondents'] }} data
@if($report['panelTest']->type === 'internal') @else @endif @forelse($report['respondents'] as $i => $r) @if($report['panelTest']->type === 'internal') @else @endif {{-- ===== DETAIL ROW ===== --}} @empty @endforelse
#PernerSPG Area Office Area Promotion SPNama Responden Generasi Gender Sesi Waktu Detail
{{ $i + 1 }} {{ $r['perner'] ?? '-' }} {{ $r['spg_name'] ?? '-' }} {{ $r['area_office'] ?? '-' }} {{ $r['area_promotion_name'] ?? '-' }} {{ $r['sp_name'] ?? '-' }}{{ $r['name'] ?? '-' }} @if(!empty($r['generation'])) @php $gc = match($r['generation']) { 'Baby Boomers' => ['bg'=>'#fef3c7','c'=>'#92400e'], 'Gen X' => ['bg'=>'#e0e7ff','c'=>'#3730a3'], 'Milenial / Gen Y' => ['bg'=>'#dcfce7','c'=>'#166534'], 'Gen Z' => ['bg'=>'#ede9fe','c'=>'#5b21b6'], 'Gen Alpha' => ['bg'=>'#fce7f3','c'=>'#9d174d'], default => ['bg'=>'#f1f5f9','c'=>'#64748b'], }; @endphp {{ $r['generation'] }} @else - @endif {{ $r['gender'] ?? '-' }} #{{ $r['session'] }} {{ $r['completed_at'] ? $r['completed_at']->format('d M Y, H:i') : '-' }}
{{-- Data Marketing --}} @php $hasMarketing = !empty($r['brand_aktivasi']) && $r['brand_aktivasi'] !== '-'; @endphp @if($hasMarketing)
Data Konsumen & Marketing
@foreach([ 'Brand Aktivasi' => $r['brand_aktivasi'] ?? '-', 'Gender Konsumen' => $r['konsumen_gender'] ?? '-', 'Usia Konsumen' => $r['konsumen_usia'] ?? '-', 'Profesi' => $r['konsumen_profesi'] ?? '-', 'Pengeluaran RT' => $r['konsumen_pengeluaran'] ?? '-', 'Funnel' => $r['konsumen_funnel'] ?? '-', 'Alasan Tdk Konversi' => $r['alasan_tidak_konversi'] ?? '-', 'Sumber Tahu Produk' => $r['sumber_tahu_produk'] ?? '-', 'Sumber Lainnya' => $r['sumber_tahu_produk_other'] ?? '-', 'Brand Kompetitor' => $r['brand_kompetitor'] ?? '-', 'Kompetitor Lainnya' => $r['brand_kompetitor_other'] ?? '-', 'Alasan Pakai Kompetitor' => $r['alasan_kompetitor'] ?? '-', ] as $label => $val) @if($val && $val !== '-')
{{ $label }}
{{ $val }}
@endif @endforeach
@endif {{-- Data Lokasi --}} @if(!empty($r['provinsi']) && $r['provinsi'] !== '-')
Data Lokasi Contact
@foreach([ 'Area Promotion' => $r['area_promotion_name'] ?? '-', 'SP' => $r['sp_name'] ?? '-', 'Provinsi' => $r['provinsi'] ?? '-', 'Kota/Kab' => $r['kota'] ?? '-', 'Kecamatan' => $r['kecamatan'] ?? '-', 'Kelurahan' => $r['kelurahan'] ?? '-', 'Keterangan' => $r['description'] ?? '-', ] as $label => $val) @if($val && $val !== '-')
{{ $label }}
{{ $val }}
@endif @endforeach
@endif {{-- Jawaban pertanyaan --}} @if(!empty($r['answers'])) @foreach($r['answers'] as $ai => $ans) @endforeach
# Pertanyaan Jawaban Catatan
{{ $ai + 1 }} {{ $ans['question'] }} @if($ans['type'] === 'rating') @for($s=1;$s<=$ans['value'];$s++)⭐@endfor ({{ $ans['value'] }}) @else {{ $ans['value'] ?? '-' }} @endif {{ $ans['note'] ?: '-' }}
@endif
Belum ada data responden
@push('scripts') @endpush @else {{-- Belum pilih panel test --}}
{{ auth()->user()->unit_type === 'marketing' ? 'Pilih consumer contact di sebelah kiri' : 'Pilih panel test di sebelah kiri' }}

untuk melihat laporan, grafik, dan analisis

@endif
@endsection