MIF_E31230356/resources/views/siswa/challenge/hasil.blade.php

178 lines
6.1 KiB
PHP

@extends('siswa.layouts.app')
@section('title', 'Hasil Challenge')
@push('styles')
<style>
.hasil-wrapper { max-width: 680px; margin: 0 auto; padding: 0 0 40px; }
.hasil-hero {
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 24px;
padding: 36px 28px;
text-align: center;
color: white;
margin-bottom: 24px;
position: relative;
overflow: hidden;
}
.hasil-hero::before {
content: '🏆';
position: absolute;
font-size: 120px;
opacity: 0.08;
top: -10px; right: -10px;
}
.hasil-emoji { font-size: 52px; margin-bottom: 10px; }
.hasil-title { font-size: 22px; font-weight: 800; margin-bottom: 4px; }
.hasil-subtitle { font-size: 14px; opacity: 0.85; margin-bottom: 20px; }
.hasil-exp {
display: inline-block;
background: rgba(255,255,255,0.2);
border-radius: 99px;
padding: 8px 24px;
font-size: 20px;
font-weight: 800;
}
.stat-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; margin-bottom: 24px; }
.stat-box { background: white; border-radius: 16px; border: 2px solid #e5e5e5; padding: 18px 14px; text-align: center; }
.stat-num { font-size: 28px; font-weight: 800; margin: 0; }
.stat-label { font-size: 12px; color: #94a3b8; margin: 4px 0 0; font-weight: 500; }
.custom-card { background: white; border-radius: 20px; border: 2px solid #e5e5e5; padding: 24px; margin-bottom: 16px; }
.section-title { font-size: 16px; font-weight: 700; color: #1e293b; margin-bottom: 16px; }
.soal-review { border: 2px solid #e2e8f0; border-radius: 14px; padding: 18px; margin-bottom: 12px; }
.soal-review.benar { border-color: #22c55e; background: #f0fdf4; }
.soal-review.salah { border-color: #ef4444; background: #fef2f2; }
.review-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.review-number { font-size: 12px; font-weight: 700; color: #64748b; }
.review-status { font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 99px; }
.review-status.benar { background: #dcfce7; color: #16a34a; }
.review-status.salah { background: #fee2e2; color: #dc2626; }
.review-pertanyaan { font-size: 14px; font-weight: 600; color: #1e293b; margin-bottom: 12px; line-height: 1.6; }
.opsi-review {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
border-radius: 10px;
font-size: 13px;
margin-bottom: 6px;
background: #f8fafc;
}
.opsi-review.jawaban-benar { background: #dcfce7; font-weight: 700; color: #15803d; }
.opsi-review.salah-dipilih { background: #fee2e2; color: #991b1b; font-weight: 700; }
.opsi-circle {
width: 26px; height: 26px;
border-radius: 50%;
background: #e2e8f0;
display: flex; align-items: center; justify-content: center;
font-size: 11px; font-weight: 700; flex-shrink: 0;
}
.opsi-review.jawaban-benar .opsi-circle { background: #22c55e; color: white; }
.opsi-review.salah-dipilih .opsi-circle { background: #ef4444; color: white; }
.btn-back {
display: block;
text-align: center;
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
border-radius: 12px;
padding: 12px;
font-size: 14px;
font-weight: 600;
text-decoration: none;
margin-top: 20px;
}
.btn-back:hover { opacity: 0.9; color: white; }
</style>
@endpush
@section('content')
@php
$emoji = $persentase >= 80 ? '🎉' : ($persentase >= 60 ? '👍' : '💪');
$pesan = $persentase >= 80
? 'Luar biasa! Kamu menguasai materi ini!'
: ($persentase >= 60 ? 'Bagus! Terus tingkatkan kemampuanmu!' : 'Jangan menyerah! Terus semangat belajar!');
@endphp
<div class="hasil-wrapper">
<div class="hasil-hero">
<div class="hasil-emoji">{{ $emoji }}</div>
<div class="hasil-title">{{ $challenge->judul_challenge }}</div>
<div class="hasil-subtitle">{{ $pesan }}</div>
<div class="hasil-exp"> +{{ $peserta->exp }} EXP didapat!</div>
</div>
<div class="stat-row">
<div class="stat-box">
<p class="stat-num" style="color:#22c55e">{{ $benar }}</p>
<p class="stat-label">Jawaban Benar</p>
</div>
<div class="stat-box">
<p class="stat-num" style="color:#ef4444">{{ $salah }}</p>
<p class="stat-label">Jawaban Salah</p>
</div>
<div class="stat-box">
<p class="stat-num" style="color:#667eea">{{ $persentase }}%</p>
<p class="stat-label">Skor</p>
</div>
</div>
<div class="custom-card">
<p class="section-title">📋 Pembahasan Jawaban</p>
@foreach($challenge->soal as $i => $soal)
@php
$jwbSiswa = strtoupper($jawabanSiswa[$soal->id_soal] ?? '');
$jwbBenar = strtoupper($soal->jawaban_benar);
$isBenar = $jwbSiswa === $jwbBenar;
@endphp
<div class="soal-review {{ $isBenar ? 'benar' : 'salah' }}">
<div class="review-header">
<span class="review-number">Soal {{ $i + 1 }}</span>
<span class="review-status {{ $isBenar ? 'benar' : 'salah' }}">
{{ $isBenar ? '✅ Benar' : '❌ Salah' }}
</span>
</div>
<p class="review-pertanyaan">{{ $soal->pertanyaan }}</p>
@foreach(['A','B','C','D'] as $opsi)
@php
$key = 'opsi_' . strtolower($opsi);
$isDipilih = $jwbSiswa === $opsi;
$isJwbBenar = $jwbBenar === $opsi;
$cls = $isJwbBenar ? 'jawaban-benar' : ($isDipilih ? 'salah-dipilih' : '');
@endphp
<div class="opsi-review {{ $cls }}">
<span class="opsi-circle">{{ $opsi }}</span>
<span>{{ $soal->$key }}</span>
@if($isJwbBenar)
<span style="margin-left:auto;font-size:12px"> Jawaban benar</span>
@elseif($isDipilih)
<span style="margin-left:auto;font-size:12px"> Jawabanmu</span>
@endif
</div>
@endforeach
</div>
@endforeach
</div>
<a href="{{ route('siswa.challenge.index') }}" class="btn-back">
Kembali ke Daftar Challenge
</a>
</div>
@endsection