@if (session('dashboard_status'))
{{ session('dashboard_status') }}
@endif

Bulk Package Import

Import Paket TOEFL Lengkap

Upload tiga file CSV sekaligus untuk membuat satu paket TOEFL baru. Sistem akan membuat paket, passage/audio group, soal, opsi, dan kunci jawaban dalam status draft.

Kembali ke Daftar Paket

Step 1

Metadata & File CSV

Kode paket harus unik. Paket hasil import tidak otomatis aktif/published agar tetap melewati review workflow.

@error('package_code')

{{ $message }}

@enderror
@error('package_type')

{{ $message }}

@enderror
@error('package_title')

{{ $message }}

@enderror
@error('package_description')

{{ $message }}

@enderror
@foreach ([ 'listening_file' => ['label' => 'Listening CSV', 'hint' => 'section_code harus listening, gunakan listening_part A/B/C.'], 'structure_file' => ['label' => 'Structure CSV', 'hint' => 'section_code harus structure, order 1-40 untuk official.'], 'reading_file' => ['label' => 'Reading CSV', 'hint' => 'section_code harus reading dan passage_title wajib.'], ] as $field => $copy)

{{ $copy['hint'] }}

@error($field)

{{ $message }}

@enderror
@endforeach
@if (($previewReport['can_import'] ?? false) === true) @endif

Step 2

Preview Import

Periksa hasil validasi sebelum paket dibuat. Official test akan ditolak jika jumlah soal tidak sesuai standar.

@if ($previewReport === [])
Belum ada preview. Isi metadata, upload tiga CSV, lalu klik Preview & Validasi.
@else
@foreach ([ 'valid_rows' => 'Soal valid', 'passages' => 'Passage', 'skipped_rows' => 'Skipped', 'errors' => 'Error', 'warnings' => 'Warning', ] as $key => $label)

{{ $label }}

{{ $previewReport['summary'][$key] }}

@endforeach
@foreach ($previewReport['sections'] as $section)

{{ $section['section_code'] }}

{{ $section['valid_rows'] }} soal

{{ $section['passages'] }} passage/audio group ยท {{ $section['skipped_rows'] }} skipped

@if ($section['section_code'] === 'listening')
@foreach ($section['listening_parts'] as $part => $count) Part {{ $part }}: {{ $count }} @endforeach
@endif
@endforeach
@if (! empty($previewReport['errors']))

Error yang harus diperbaiki

    @foreach (array_slice($previewReport['errors'], 0, 10) as $error)
  • {{ $error }}
  • @endforeach
@endif @if (! empty($previewReport['warnings']))

Warning

    @foreach (array_slice($previewReport['warnings'], 0, 10) as $warning)
  • {{ $warning }}
  • @endforeach
@endif @endif