MIF_E31230302/app/Http/Controllers/RekapController.php

58 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\DataTesting;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Support\Facades\DB;
class RekapController extends Controller
{
/**
* Menampilkan Halaman Dashboard Rekapitulasi & Grafik
*/
public function index()
{
// 1. Total Seluruh Konsultasi
$totalKonsultasi = DataTesting::count();
// 2. Hitung Rekapitulasi Jumlah Siswa per Rekomendasi Jurusan
$rekapJurusan = DataTesting::select('hasil_rekomendasi', DB::raw('count(*) as total'))
->groupBy('hasil_rekomendasi')
->orderBy('total', 'desc')
->get();
// Format data untuk Chart.js (Grafik)
$labels = $rekapJurusan->pluck('hasil_rekomendasi');
$totals = $rekapJurusan->pluck('total');
// 3. Ambil 10 Riwayat Konsultasi Terbaru
$riwayatTerbaru = DataTesting::latest()->take(10)->get();
return view('admin.rekap', compact(
'totalKonsultasi',
'rekapJurusan',
'labels',
'totals',
'riwayatTerbaru'
));
}
/**
* Meng-generate dan Mengunduh Laporan Laporan Berformat PDF
*/
public function exportPdf()
{
// Ambil Seluruh Data Konsultasi dari DataTesting
$data = DataTesting::latest()->get();
$totalKonsultasi = $data->count();
$tanggalCetak = date('d F Y');
// Render template blade ke PDF ukuran A4 landscape
$pdf = Pdf::loadView('admin.pdf_rekap_konsultasi', compact('data', 'totalKonsultasi', 'tanggalCetak'))
->setPaper('a4', 'landscape');
return $pdf->download('Laporan_Rekap_Konsultasi_Siswa_' . date('Ymd_His') . '.pdf');
}
}