58 lines
1.7 KiB
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');
|
|
}
|
|
} |