middleware(['auth', 'role:admin']); } /** * Display a listing of the resource. */ public function dashboard() { $totalAsuransi = Asuransi::count(); $totalPegawai = Pegawai::count(); $totalPasien = Pasien::count(); $totalRegistrasi = Registrasi::count(); $totalRuang = RuangPelayanan::count(); $totalTindakan = Tindakan::count(); $endDate = Carbon::now(); $startDate = Carbon::now()->subDays(30); $registrasiData = Registrasi::whereBetween('tanggal_registrasi', [$startDate, $endDate]) ->selectRaw('DATE(tanggal_registrasi) as date, COUNT(*) as count') ->groupBy('date') ->orderBy('date') ->get(); $pendapatanData = Transaksi::whereBetween('tanggal_transaksi', [$startDate, $endDate]) ->where('status_pembayaran', 'lunas') ->selectRaw('DATE(tanggal_transaksi) as date, SUM(total_tarif) as total') ->groupBy('date') ->orderBy('date') ->get(); $distribusiPasien = Registrasi::with('ruang_pelayanan') ->selectRaw('ruang_pelayanan_id, COUNT(*) as total') ->whereBetween('tanggal_registrasi', [$startDate, $endDate]) ->groupBy('ruang_pelayanan_id') ->get(); return view('admin.dashboard.admin', compact( 'totalAsuransi', 'totalPegawai', 'totalPasien', 'totalRegistrasi', 'totalRuang', 'totalTindakan', 'registrasiData', 'pendapatanData', 'distribusiPasien' )); } // ==================== CRUD ASURANSI ==================== public function indexAsuransi() { $asuransi = Asuransi::all(); return view('admin.asuransi.index', compact('asuransi')); } public function createAsuransi() { return view('admin.asuransi.create'); } public function storeAsuransi(Request $request) { $validated = $request->validate([ 'nama_asuransi' => 'required|max:100|unique:asuransis,nama_asuransi', ]); Asuransi::create($validated); return redirect()->route('asuransi.index')->with('message', 'Asuransi created successfully'); } public function editAsuransi(Asuransi $asuransi) { return view('admin.asuransi.edit', compact('asuransi')); } public function updateAsuransi(Request $request, Asuransi $asuransi) { $validated = $request->validate([ 'nama_asuransi' => 'required|max:100|unique:asuransis,nama_asuransi', ]); $asuransi->update($validated); return redirect()->route('asuransi.index')->with('message', 'Asuransi updated successfully'); } public function destroyAsuransi(Asuransi $asuransi) { $asuransi->delete(); return response()->json(['message' => 'Asuransi deleted successfully']); } // ==================== CRUD PEGAWAI ==================== public function indexPegawai() { $pegawai = Pegawai::all(); return view('admin.pegawai.index', compact('pegawai')); } public function indexPegawaiPelayanan() { $pegawai = Pegawai::join('ruang_pelayanans', 'pegawais.ruang_pelayanan_id', '=', 'ruang_pelayanans.id') ->orderBy('ruang_pelayanans.nama_ruang_pelayanan') ->select('pegawais.*') // Memastikan hanya kolom pegawai yang diambil ->get(); return view('admin.pegawai.index', compact('pegawai')); } public function createPegawai() { $ruangPelayanans = RuangPelayanan::all(); return view('admin.pegawai.create', compact('ruangPelayanans')); } public function storePegawai(Request $request) { $validated = $request->validate([ 'nip' => 'required|unique:pegawais,nip', 'nama_pegawai' => 'required|max:100', 'spesialisasi' => 'nullable|string', 'ruang_pelayanan_id' => 'nullable|exists:ruang_pelayanans,id', ]); Pegawai::create($validated); return redirect()->route('pegawai.index')->with('message', 'Pegawai created successfully'); } public function editPegawai(Pegawai $pegawai) { $ruangPelayanans = RuangPelayanan::all(); return view('admin.pegawai.edit', compact('pegawai', 'ruangPelayanans')); } public function updatePegawai(Request $request, Pegawai $pegawai) { $validated = $request->validate([ 'nip' => 'required|unique:pegawais,nip,' . $pegawai->id, 'nama_pegawai' => 'required|max:100', 'spesialisasi' => 'nullable|string', 'ruang_pelayanan_id' => 'nullable|exists:ruang_pelayanans,id', ]); $pegawai->update($validated); return redirect()->route('pegawai.index')->with('message', 'Pegawai updated successfully'); } public function destroyPegawai(Pegawai $pegawai) { $pegawai->delete(); return redirect()->route('pegawai.index')->with('message', 'Pegawai deleted successfully'); } // ==================== CRUD RUANG PELAYANAN ==================== public function indexRuangPelayanan() { $ruangPelayanan = RuangPelayanan::all(); return view('admin.ruang.index', compact('ruangPelayanan')); } public function createRuangPelayanan() { $ruangPelayanan = RuangPelayanan::all(); return view('admin.ruang.create'); } public function storeRuangPelayanan(Request $request) { $validated = $request->validate([ 'nama_ruang_pelayanan' => 'required|max:100|unique:ruang_pelayanans,nama_ruang_pelayanan', ]); RuangPelayanan::create($validated); return redirect()->route('ruang.index')->with('message', 'Ruang Pelayanan created successfully'); } public function editRuangPelayanan(RuangPelayanan $ruangPelayanan) { return view('admin.ruang.edit', compact('ruangPelayanan')); } public function updateRuangPelayanan(Request $request, RuangPelayanan $ruangPelayanan) { $validated = $request->validate([ 'nama_ruang_pelayanan' => 'required|max:100|unique:ruang_pelayanans,nama_ruang_pelayanan,' . $ruangPelayanan->id, ]); $ruangPelayanan->update($validated); return redirect()->route('ruang.index')->with('message', 'Ruang Pelayanan updated successfully'); } public function destroyRuangPelayanan(RuangPelayanan $ruangPelayanan) { $ruangPelayanan->delete(); return redirect()->route('ruang.index')->with('message', 'Ruang Pelayanan deleted successfully'); } // ==================== CRUD TINDAKAN ==================== public function indexTindakan() { $tindakan = Tindakan::all(); return view('admin.tindakan.index', compact('tindakan')); } public function createTindakan() { return view('admin.tindakan.create'); } public function storeTindakan(Request $request) { $validated = $request->validate([ 'nama_tindakan' => 'required|string', 'tarif_tindakan' => 'required|string', ]); Tindakan::create($validated); return redirect()->route('admin.tindakan.index')->with('message', 'Tindakan created successfully'); } public function editTindakan(Tindakan $tindakan) { return view('admin.tindakan.edit', compact('tindakan')); } public function updateTindakan(Request $request, Tindakan $tindakan) { $validated = $request->validate([ 'nama_tindakan' => 'required|string', 'tarif_tindakan' => 'required|string', ]); $tindakan->update($validated); return redirect()->route('admin.tindakan.index')->with('message', 'Tindakan updated successfully'); } public function destroyTindakan(Tindakan $tindakan) { $tindakan->delete(); return redirect()->route('admin.tindakan.index')->with('message', 'Tindakan deleted successfully'); } }