MIF_E31222508/app/Http/Controllers/AdminController.php

123 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Solusi;
use Illuminate\Http\Request;
use App\Models\Gejala;
use App\Models\Penyakit;
use App\Models\Aturan;
use App\Models\User;
use App\Models\RiwayatDiagnosa;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AdminController extends Controller
{
// Dashboard admin
public function index()
{
$data = [
'gejala' => Gejala::count(),
'penyakit' => Penyakit::count(),
'aturan' => Aturan::count(),
'user' => User::where('role', 'user')->count(),
];
return view('admin.dashboard', compact('data'));
}
public function user()
{
$users = User::where('role', 'user')->get(); // ambil semua user biasa
return view('admin.user', compact('users'));
}
public function destroyUser($id)
{
$user = User::findOrFail($id);
// Pastikan hanya user biasa yang bisa dihapus
if ($user->role === 'user') {
$user->delete();
return redirect()->back()->with('success', 'Pengguna berhasil dihapus.');
}
return redirect()->back()->with('error', 'Tidak bisa menghapus user ini.');
}
public function gejala()
{
$gejala = Gejala::all();
return view('admin.gejala', compact('gejala'));
}
// Tampilkan daftar penyakit
public function penyakit()
{
$penyakit = Penyakit::all();
return view('admin.penyakit', compact('penyakit'));
}
// Tampilkan daftar aturan dengan relasi
public function aturan()
{
$gejala = Gejala::all();
$penyakit = Penyakit::all();
$aturan = Aturan::with(['gejala', 'penyakit'])->get();
return view('admin.aturan', compact('gejala', 'penyakit', 'aturan'));
}
public function solusi()
{
$solusi = Solusi::with('penyakit')->get(); // join ke tabel penyakit
$penyakit = Penyakit::all(); // ambil semua penyakit untuk dropdown
return view('admin.solusi', compact('solusi', 'penyakit'));
}
public function editProfile()
{
$admin = Auth::user();
return view('admin.profile', compact('admin'));
}
public function updateProfile(Request $request)
{
$admin = Auth::user();
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|max:255',
'current_password' => 'nullable|required_with:new_password|string',
'new_password' => 'nullable|string|min:6|confirmed',
]);
// Cek password lama jika ingin ganti password
if ($request->filled('new_password')) {
if (!Hash::check($request->current_password, $admin->password)) {
return back()->withErrors(['current_password' => 'Password lama salah.']);
}
$admin->password = Hash::make($request->new_password);
}
// Update nama dan email
$admin->name = $request->name;
$admin->email = $request->email;
$admin->save();
return redirect()->back()->with('success', 'Profil berhasil diperbarui.');
}
public function indexRiwayatAdmin()
{
$riwayat = RiwayatDiagnosa::with(['penyakit', 'user'])
->orderBy('created_at', 'desc')
->get();
return view('admin.riwayat', compact('riwayat'));
}
}