has('search')) { $search = $request->search; $query->where('nama_kelas', 'like', "%$search%") ->orWhere('id_kelas', 'like', "%$search%"); } // SHOW PER PAGE $perPage = $request->get('perPage', 10); $kelass = $query->paginate($perPage)->appends($request->all()); return view('admin.kelas.index', compact('kelass')); } public function store(Request $request) { $validated = $request->validate([ 'nama_kelas' => [ 'required', 'string', 'max:50', Rule::unique('kelas')->where(function ($query) use ($request) { return $query->where('tingkat', $request->tingkat); }), ], 'tingkat' => 'required|in:X,XI,XII', ], [ 'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!', ]); Kelas::create([ 'nama_kelas' => $validated['nama_kelas'], 'tingkat' => $validated['tingkat'], ]); return redirect()->route('admin.kelas.index') ->with('success', 'Data kelas berhasil ditambahkan!'); } public function update(Request $request, $id_kelas) { $kelas = Kelas::findOrFail($id_kelas); $validated = $request->validate([ 'nama_kelas' => [ 'required', 'string', 'max:50', Rule::unique('kelas')->where(function ($query) use ($request) { return $query->where('tingkat', $request->tingkat); })->ignore($id_kelas, 'id_kelas'), ], 'tingkat' => 'required|in:X,XI,XII', ], [ 'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!', ]); $kelas->update($validated); return redirect()->route('admin.kelas.index') ->with('success', 'Data kelas berhasil diupdate!'); } public function destroy($id_kelas) { $kelas = Kelas::findOrFail($id_kelas); $kelas->delete(); return redirect()->route('admin.kelas.index') ->with('success', 'Data kelas berhasil dihapus!'); } public function downloadPdf(Request $request) { $query = Kelas::query(); if ($request->filled('search')) { $search = $request->search; $query->where('nama_kelas', 'like', "%$search%") ->orWhere('id_kelas', 'like', "%$search%"); } $kelass = $query->get(); $pdf = Pdf::loadView('admin.kelas.pdf', compact('kelass')) ->setPaper('a4', 'portrait'); return $pdf->download('daftar-kelas-' . date('Ymd') . '.pdf'); } public function downloadExcel(Request $request) { $query = Kelas::query(); if ($request->filled('search')) { $search = $request->search; $query->where('nama_kelas', 'like', "%$search%") ->orWhere('id_kelas', 'like', "%$search%"); } $kelass = $query->get(); $filename = 'daftar-kelas-' . date('Ymd') . '.csv'; $headers = [ 'Content-Type' => 'text/csv', 'Content-Disposition' => "attachment; filename=\"$filename\"", ]; $callback = function () use ($kelass) { $file = fopen('php://output', 'w'); fprintf($file, chr(0xEF).chr(0xBB).chr(0xBF)); fputcsv($file, ['No', 'ID Kelas', 'Nama Kelas', 'Tingkat']); foreach ($kelass as $i => $kelas) { fputcsv($file, [$i + 1, $kelas->id_kelas, $kelas->nama_kelas, $kelas->tingkat]); } fclose($file); }; return response()->stream($callback, 200, $headers); } }