From 23b28a1590fe5f0e24b72e96b961e6acd8d13609 Mon Sep 17 00:00:00 2001 From: E31232303evimr <158023512+E31232303evimr@users.noreply.github.com> Date: Tue, 3 Mar 2026 19:08:21 +0700 Subject: [PATCH] user:dashboard done --- .../User/ArtikelUserController.php | 35 +++ .../Controllers/User/DiagnosaController.php | 119 +++++++++ .../User/UserDashboardController.php | 63 +++++ app/Http/Middleware/IsUser.php | 17 ++ bootstrap/app.php | 1 + resources/views/admin/dashboard.blade.php | 4 +- .../views/admin/penyakit/index.blade.php | 4 +- .../views/admin/rule-basis/create.blade.php | 18 +- .../views/admin/rule-basis/edit.blade.php | 14 +- .../views/admin/rule-basis/index.blade.php | 10 +- resources/views/layouts/admin-app.blade.php | 40 +-- resources/views/layouts/user-app.blade.php | 228 +++++++++++++++++ resources/views/profile/edit.blade.php | 2 +- resources/views/user/dashboard.blade.php | 242 ++++++++++++++++++ resources/views/user/diagnosa/hasil.blade.php | 185 +++++++++++++ resources/views/user/diagnosa/index.blade.php | 172 +++++++++++++ .../views/user/diagnosa/riwayat.blade.php | 87 +++++++ routes/web.php | 25 +- 18 files changed, 1206 insertions(+), 60 deletions(-) create mode 100644 app/Http/Controllers/User/ArtikelUserController.php create mode 100644 app/Http/Controllers/User/DiagnosaController.php create mode 100644 app/Http/Controllers/User/UserDashboardController.php create mode 100644 app/Http/Middleware/IsUser.php create mode 100644 resources/views/layouts/user-app.blade.php create mode 100644 resources/views/user/dashboard.blade.php create mode 100644 resources/views/user/diagnosa/hasil.blade.php create mode 100644 resources/views/user/diagnosa/index.blade.php create mode 100644 resources/views/user/diagnosa/riwayat.blade.php diff --git a/app/Http/Controllers/User/ArtikelUserController.php b/app/Http/Controllers/User/ArtikelUserController.php new file mode 100644 index 0000000..a53d3aa --- /dev/null +++ b/app/Http/Controllers/User/ArtikelUserController.php @@ -0,0 +1,35 @@ +latest()->paginate(9); + return view('user.artikel.budidaya', compact('artikels')); + } + + public function detailBudidaya($slug) + { + $artikel = InformasiBudidaya::where('slug', $slug)->firstOrFail(); + return view('user.artikel.detail-budidaya', compact('artikel')); + } + + public function hamaPenyakit() + { + $hama = InformasiHamaPenyakit::published()->where('jenis', 'Hama')->latest()->get(); + $penyakit = InformasiHamaPenyakit::published()->where('jenis', 'Penyakit')->latest()->get(); + return view('user.artikel.hama-penyakit', compact('hama', 'penyakit')); + } + + public function detailHamaPenyakit($slug) + { + $artikel = InformasiHamaPenyakit::where('slug', $slug)->firstOrFail(); + return view('user.artikel.detail-hama-penyakit', compact('artikel')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/User/DiagnosaController.php b/app/Http/Controllers/User/DiagnosaController.php new file mode 100644 index 0000000..039cee2 --- /dev/null +++ b/app/Http/Controllers/User/DiagnosaController.php @@ -0,0 +1,119 @@ +get(); + return view('user.diagnosa.index', compact('gejalas')); + } + + public function proses(Request $request) + { + $request->validate([ + 'gejala' => 'required|array|min:1', + ], [ + 'gejala.required' => 'Pilih minimal 1 gejala!', + 'gejala.min' => 'Pilih minimal 1 gejala!', + ]); + + $gejalaInput = $request->gejala; // array of id_gejala + + // Ambil semua rule yang relevan + $rules = RuleBasis::whereIn('id_gejala', $gejalaInput)->get(); + + // Hitung MB dan MD per penyakit dulu + $mbPenyakit = []; + $mdPenyakit = []; + + foreach ($rules as $rule) { + $idPenyakit = $rule->id_penyakit; + + if (!isset($mbPenyakit[$idPenyakit])) { + // Gejala pertama + $mbPenyakit[$idPenyakit] = $rule->mb; + $mdPenyakit[$idPenyakit] = $rule->md; + } else { + // Kombinasi gejala berikutnya (rumus 2 & 3) + $mbPenyakit[$idPenyakit] = $mbPenyakit[$idPenyakit] * $rule->mb; + $mdPenyakit[$idPenyakit] = $mdPenyakit[$idPenyakit] + $rule->md * (1 - $mdPenyakit[$idPenyakit]); + } + } + + // Hitung CF = MB - MD + $cfPenyakit = []; + foreach ($mbPenyakit as $idPenyakit => $mb) { + $cfPenyakit[$idPenyakit] = $mb - $mdPenyakit[$idPenyakit]; + } + + if (empty($cfPenyakit)) { + return redirect()->route('user.diagnosa.index') + ->with('error', 'Tidak ditemukan penyakit yang cocok dengan gejala yang dipilih.'); + } + + // Urutkan dari CF tertinggi + arsort($cfPenyakit); + + // Ambil data penyakit + $hasilDiagnosa = []; + foreach ($cfPenyakit as $idPenyakit => $cf) { + $penyakit = MasterPenyakit::find($idPenyakit); + if ($penyakit) { + $hasilDiagnosa[] = [ + 'id_penyakit' => $idPenyakit, + 'nama_penyakit' => $penyakit->nama_penyakit, + 'cf' => round($cf, 2), + 'persentase' => round($cf * 100, 1), + ]; + } + } + + $penyakitFinal = $hasilDiagnosa[0]['id_penyakit']; + $cfTertinggi = $hasilDiagnosa[0]['cf']; + + // Simpan ke riwayat + $riwayat = RiwayatDiagnosis::create([ + 'user_id' => auth()->id(), + 'tanggal' => now(), + 'gejala_input' => $gejalaInput, + 'hasil_diagnosa'=> $hasilDiagnosa, + 'cf_tertinggi' => $cfTertinggi, + 'penyakit_final'=> $penyakitFinal, + ]); + + return redirect()->route('user.diagnosa.hasil', $riwayat->id_diagnosis); + } + + public function hasil($id) + { + $riwayat = RiwayatDiagnosis::with('penyakit')->findOrFail($id); + + // Pastikan hanya pemilik yang bisa lihat + if ($riwayat->user_id !== auth()->id()) { + abort(403); + } + + $gejalaInput = MasterGejala::whereIn('id_gejala', $riwayat->gejala_input)->get(); + + return view('user.diagnosa.hasil', compact('riwayat', 'gejalaInput')); + } + + public function riwayat() + { + $riwayats = RiwayatDiagnosis::where('user_id', auth()->id()) + ->with('penyakit') + ->latest('tanggal') + ->paginate(10); + + return view('user.diagnosa.riwayat', compact('riwayats')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/User/UserDashboardController.php b/app/Http/Controllers/User/UserDashboardController.php new file mode 100644 index 0000000..25f14a7 --- /dev/null +++ b/app/Http/Controllers/User/UserDashboardController.php @@ -0,0 +1,63 @@ +user(); + + // Total diagnosa user + $totalDiagnosa = RiwayatDiagnosis::where('user_id', $user->id)->count(); + + // Diagnosa bulan ini + $diagnosabulanIni = RiwayatDiagnosis::where('user_id', $user->id) + ->whereMonth('tanggal', now()->month) + ->whereYear('tanggal', now()->year) + ->count(); + + // Riwayat diagnosa terbaru + $riwayatTerbaru = RiwayatDiagnosis::where('user_id', $user->id) + ->with('penyakit') + ->latest('tanggal') + ->take(5) + ->get(); + + // Data chart per bulan (6 bulan terakhir) + $chartData = []; + for ($i = 5; $i >= 0; $i--) { + $bulan = now()->subMonths($i); + $chartData[] = [ + 'bulan' => $bulan->format('M Y'), + 'total' => RiwayatDiagnosis::where('user_id', $user->id) + ->whereMonth('tanggal', $bulan->month) + ->whereYear('tanggal', $bulan->year) + ->count(), + ]; + } + + // Statistik penyakit terbanyak didiagnosa user + $statistikPenyakit = RiwayatDiagnosis::where('user_id', $user->id) + ->whereNotNull('penyakit_final') + ->selectRaw('penyakit_final, count(*) as total') + ->groupBy('penyakit_final') + ->with('penyakit') + ->orderByDesc('total') + ->take(5) + ->get(); + + return view('user.dashboard', compact( + 'totalDiagnosa', + 'diagnosabulanIni', + 'riwayatTerbaru', + 'chartData', + 'statistikPenyakit' + )); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/IsUser.php b/app/Http/Middleware/IsUser.php new file mode 100644 index 0000000..144416f --- /dev/null +++ b/app/Http/Middleware/IsUser.php @@ -0,0 +1,17 @@ +check() && auth()->user()->role === 'user') { + return $next($request); + } + abort(403, 'Akses ditolak.'); + } +} \ No newline at end of file diff --git a/bootstrap/app.php b/bootstrap/app.php index bb704ca..ecef746 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -14,6 +14,7 @@ $middleware->alias([ 'admin' => \App\Http\Middleware\IsAdmin::class, 'super_admin' => \App\Http\Middleware\IsSuperAdmin::class, + 'isUser' => \App\Http\Middleware\IsUser::class, ]); }) ->withExceptions(function (Exceptions $exceptions): void { diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 650b612..73f75bc 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -1,6 +1,6 @@ @extends('layouts.admin-app') -@section('page-title', '📊 Dashboard') +@section('page-title', 'Dashboard') @section('page-subtitle', 'Overview statistik sistem pakar') @section('content') @@ -9,7 +9,7 @@
-

Selamat Datang Kembali! 👋

+

Selamat Datang Kembali!

{{ Auth::user()->nama }}

{{ now()->translatedFormat('l, d F Y') }}

diff --git a/resources/views/admin/penyakit/index.blade.php b/resources/views/admin/penyakit/index.blade.php index 3a9c17c..6d9f6a1 100644 --- a/resources/views/admin/penyakit/index.blade.php +++ b/resources/views/admin/penyakit/index.blade.php @@ -27,14 +27,14 @@
-
+

Daftar Penyakit & Hama Tanaman Kopi

- + diff --git a/resources/views/admin/rule-basis/create.blade.php b/resources/views/admin/rule-basis/create.blade.php index 052cbad..8a71651 100644 --- a/resources/views/admin/rule-basis/create.blade.php +++ b/resources/views/admin/rule-basis/create.blade.php @@ -29,7 +29,7 @@
-
+
@@ -49,7 +49,7 @@ @@ -100,7 +100,7 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:rin step="0.01" min="0" max="1" - class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition @error('mb') border-red-500 @enderror" + class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-green-500 focus:border-green-500 transition @error('mb') border-red-500 @enderror" placeholder="0.00 - 1.00" required oninput="calculateCF()" @@ -124,7 +124,7 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:rin step="0.01" min="0" max="1" - class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition @error('md') border-red-500 @enderror" + class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-green-500 focus:border-green-500 transition @error('md') border-red-500 @enderror" placeholder="0.00 - 1.00" required oninput="calculateCF()" @@ -140,10 +140,10 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:rin -
+
CF = MB - MD - 0.00 + 0.00

Nilai CF akan otomatis dihitung dari MB - MD

@@ -158,7 +158,7 @@ class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:rin name="keterangan" id="keterangan" rows="3" - class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition" + class="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-green-500 focus:border-green-500 transition" placeholder="Catatan tambahan tentang rule ini..." >{{ old('keterangan') }}
@@ -173,7 +173,7 @@ class="px-6 py-3 bg-gray-300 text-gray-700 font-semibold rounded-xl hover:bg-gra
{{-- FIX: Tombol Simpan pakai inline style agar warna tidak transparan --}} @if(request('penyakit') || request('gejala')) diff --git a/resources/views/layouts/admin-app.blade.php b/resources/views/layouts/admin-app.blade.php index 79d4992..ff33350 100644 --- a/resources/views/layouts/admin-app.blade.php +++ b/resources/views/layouts/admin-app.blade.php @@ -58,27 +58,7 @@ animation: float 3s ease-in-out infinite; } - /* Menu Item Active Indicator */ - .menu-item { - position: relative; - } - - .menu-item::before { - content: ''; - position: absolute; - left: 0; - top: 0; - height: 100%; - width: 4px; - background: linear-gradient(to bottom, #5FA357, #C1FA70); - transform: translateX(-100%); - transition: transform 0.3s ease; - } - - .menu-item:hover::before, - .menu-item.active::before { - transform: translateX(0); - } + /* Page Fade In Animation */ @keyframes fadeInUp { @@ -150,8 +130,8 @@ class="p-2 rounded-lg hover:bg-gray-700 transition-colors"
-
- +
+
@@ -163,8 +143,8 @@ class="menu-item flex items-center px-4 py-3 rounded-xl hover:bg-gray-700 {{ req
-
- +
+
@@ -186,11 +166,11 @@ class="menu-item flex items-center px-4 py-3 rounded-xl hover:bg-gray-700 {{ req
-
-
- +
+
@@ -205,8 +185,8 @@ class="menu-item flex items-center px-4 py-3 rounded-xl hover:bg-gray-700 {{ req +
+
+ + +
+ + +
+
+ @csrf + +
+
+ + + + +
+ + @stack('scripts') + + \ No newline at end of file diff --git a/resources/views/profile/edit.blade.php b/resources/views/profile/edit.blade.php index b4a82d4..e961447 100644 --- a/resources/views/profile/edit.blade.php +++ b/resources/views/profile/edit.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.admin-app') +@extends(auth()->user()->role === 'admin' || auth()->user()->role === 'super_admin' ? 'layouts.admin-app' : 'layouts.user-app') @section('page-title', '👤 Profile Settings') @section('page-subtitle', 'Kelola informasi profil Anda') diff --git a/resources/views/user/dashboard.blade.php b/resources/views/user/dashboard.blade.php new file mode 100644 index 0000000..731b882 --- /dev/null +++ b/resources/views/user/dashboard.blade.php @@ -0,0 +1,242 @@ +@extends('layouts.user-app') + +@section('page-title', 'Dashboard') +@section('page-subtitle', 'Selamat datang di Coffee Expert System') + +@section('content') + + +
+
+
+

Halo, {{ Auth::user()->nama }}!

+

Selamat datang kembali di sistem pakar kopi. Apa yang ingin kamu lakukan hari ini?

+

+
+ +
+ +
+ + +
+ +
+
+
+

Total Diagnosa

+

{{ $totalDiagnosa }}

+

Sepanjang waktu

+
+
+ + + +
+
+
+ + +
+
+
+

Diagnosa Bulan Ini

+

{{ $diagnosabulanIni }}

+

{{ now()->format('F Y') }}

+
+
+ + + +
+
+
+ + +
+
+
+

Diagnosa Terakhir

+ @if($riwayatTerbaru->first()) +

{{ $riwayatTerbaru->first()->penyakit->nama_penyakit ?? '-' }}

+

{{ $riwayatTerbaru->first()->tanggal->format('d M Y') }}

+ @else +

Belum ada

+

-

+ @endif +
+
+ + + +
+
+
+
+ + +
+ +
+

Aktivitas Diagnosa (6 Bulan Terakhir)

+
+ +
+
+ + +
+

Distribusi Penyakit

+ @if($statistikPenyakit->count() > 0) +
+ +
+ @else +
+ + + +

Belum ada data

+
+ @endif +
+
+ + +
+ + +
+

Statistik Penyakit Terdiagnosa

+ @if($statistikPenyakit->count() > 0) +
+ @foreach($statistikPenyakit as $stat) +
+
+
+ {{ $stat->penyakit->nama_penyakit ?? $stat->penyakit_final }} +
+
+
+
+
+ {{ $stat->total }}x +
+
+ @endforeach +
+ @else +
+

Belum ada data statistik

+
+ @endif +
+ + +
+
+

Riwayat Terbaru

+ Lihat Semua +
+ @forelse($riwayatTerbaru as $riwayat) +
+
+

{{ $riwayat->penyakit->nama_penyakit ?? '-' }}

+

{{ $riwayat->tanggal->format('d M Y, H:i') }}

+
+
+ + {{ round($riwayat->cf_tertinggi * 100, 1) }}% + + Detail +
+
+ @empty +
+

Belum ada riwayat diagnosa

+ Mulai diagnosa sekarang +
+ @endforelse +
+
+ +@endsection + +@push('scripts') + + +@endpush \ No newline at end of file diff --git a/resources/views/user/diagnosa/hasil.blade.php b/resources/views/user/diagnosa/hasil.blade.php new file mode 100644 index 0000000..7091828 --- /dev/null +++ b/resources/views/user/diagnosa/hasil.blade.php @@ -0,0 +1,185 @@ +@extends('layouts.user-app') + +@section('page-title', '📋 Hasil Diagnosa') +@section('page-subtitle', 'Hasil analisis penyakit tanaman kopi kamu') + +@section('content') + +
+ + +
+ + +
+
+
+ + + +
+

Hasil Diagnosa

+
+ + @if($riwayat->penyakit) + +
+
+
+

Penyakit Terdeteksi

+

{{ $riwayat->penyakit->nama_penyakit }}

+ @if($riwayat->penyakit->nama_latin) +

{{ $riwayat->penyakit->nama_latin }}

+ @endif +
+
+

Tingkat Kepercayaan

+

{{ round($riwayat->cf_tertinggi * 100, 1) }}%

+
+
+ + +
+
+
+
+
+ + + @if($riwayat->penyakit->tingkat_bahaya) +
+ + âš ī¸ Tingkat Bahaya: {{ $riwayat->penyakit->tingkat_bahaya }} + +
+ @endif +
+ + + @if($riwayat->penyakit->deskripsi_singkat) +
+

📝 Deskripsi

+

{{ $riwayat->penyakit->deskripsi_singkat }}

+
+ @endif + +
+ @if($riwayat->penyakit->pengendalian_pencegahan) +
+

đŸ›Ąī¸ Pencegahan

+

{{ $riwayat->penyakit->pengendalian_pencegahan }}

+
+ @endif + @if($riwayat->penyakit->pengendalian_kimia) +
+

âš—ī¸ Pengendalian Kimia

+

{{ $riwayat->penyakit->pengendalian_kimia }}

+
+ @endif + @if($riwayat->penyakit->pengendalian_organik) +
+

đŸŒŋ Pengendalian Organik

+

{{ $riwayat->penyakit->pengendalian_organik }}

+
+ @endif + @if($riwayat->penyakit->pengendalian_budidaya) +
+

🌱 Pengendalian Budidaya

+

{{ $riwayat->penyakit->pengendalian_budidaya }}

+
+ @endif +
+ @else +
+

Tidak ditemukan data penyakit

+
+ @endif +
+ + + @if($riwayat->hasil_diagnosa && count($riwayat->hasil_diagnosa) > 1) +
+

📊 Semua Kemungkinan Penyakit

+
+ @foreach($riwayat->hasil_diagnosa as $index => $hasil) +
+
+ + {{ $index + 1 }} + + + {{ $hasil['nama_penyakit'] }} + +
+
+
+
+
+ + {{ $hasil['persentase'] }}% + +
+
+ @endforeach +
+
+ @endif +
+ + +
+ + +
+

â„šī¸ Info Diagnosa

+
+
+ Tanggal + {{ $riwayat->tanggal->format('d M Y, H:i') }} +
+
+ Jumlah Gejala + {{ count($riwayat->gejala_input) }} gejala +
+
+ CF Tertinggi + {{ round($riwayat->cf_tertinggi * 100, 1) }}% +
+
+
+ + +
+

đŸŠē Gejala yang Dipilih

+
+ @foreach($gejalaInput as $gejala) +
+ + + + {{ $gejala->nama_gejala }} +
+ @endforeach +
+
+ + + +
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/user/diagnosa/index.blade.php b/resources/views/user/diagnosa/index.blade.php new file mode 100644 index 0000000..268e384 --- /dev/null +++ b/resources/views/user/diagnosa/index.blade.php @@ -0,0 +1,172 @@ +@extends('layouts.user-app') + +@section('page-title', '🔍 Diagnosa Penyakit') +@section('page-subtitle', 'Pilih gejala yang dialami tanaman kopi kamu') + +@section('content') + +@if(session('error')) +
+ + + + {{ session('error') }} +
+@endif + +
+ @csrf + +
+ + +
+
+
+
+
+ + + +
+
+

Pilih Gejala

+

Centang gejala yang sesuai dengan kondisi tanaman

+
+
+ + +
+ + +
+ @foreach($gejalas as $index => $gejala) + + @endforeach +
+ + @error('gejala') +

{{ $message }}

+ @enderror +
+
+ + +
+ + +
+

✅ Gejala Terpilih

+ +
0
+

gejala dipilih

+ +
+

Belum ada gejala dipilih

+
+ + + + + + +
+

+ 💡 Pilih semua gejala yang kamu amati pada tanaman untuk hasil diagnosa yang lebih akurat. +

+
+
+
+
+
+ +@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/user/diagnosa/riwayat.blade.php b/resources/views/user/diagnosa/riwayat.blade.php new file mode 100644 index 0000000..ed88fb7 --- /dev/null +++ b/resources/views/user/diagnosa/riwayat.blade.php @@ -0,0 +1,87 @@ +@extends('layouts.user-app') + +@section('page-title', '📋 Riwayat Diagnosa') +@section('page-subtitle', 'Histori diagnosa penyakit tanaman kopi kamu') + +@section('content') + +
+
+
+
+
+ + + +
+

Riwayat Diagnosa

+
+ + + Diagnosa Baru + +
+ +
+ + + + + + + + + + + + + @forelse($riwayats as $index => $riwayat) + + + + + + + + + @empty + + + + @endforelse + +
NoTanggalPenyakitGejalaCFAksi
{{ $riwayats->firstItem() + $index }}{{ $riwayat->tanggal->format('d M Y, H:i') }} + + {{ $riwayat->penyakit->nama_penyakit ?? '-' }} + + + + {{ count($riwayat->gejala_input) }} gejala + + + + {{ round($riwayat->cf_tertinggi * 100, 1) }}% + + + + Lihat Detail + +
+ + + +

Belum ada riwayat diagnosa

+ + Mulai diagnosa sekarang + +
+
+ +
{{ $riwayats->links() }}
+
+
+ +@endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 4ff79a5..fbe5444 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,12 +9,14 @@ use App\Http\Controllers\Admin\RuleBasisController; use App\Http\Controllers\Admin\ArtikelBudidayaController; use App\Http\Controllers\Admin\ArtikelHamaPenyakitController; +use App\Http\Controllers\User\UserDashboardController; +use App\Http\Controllers\User\DiagnosaController; +use App\Http\Controllers\User\ArtikelUserController; Route::get('/', function () { return view('welcome'); }); - -// Dashboard untuk user biasa +//LOGIN Route::middleware('auth')->group(function () { Route::get('/dashboard', function () { // Redirect berdasarkan role @@ -23,9 +25,24 @@ } elseif (auth()->user()->role === 'admin') { return redirect()->route('admin.dashboard'); } - return view('dashboard'); + return redirect()->route('user.dashboard'); })->name('dashboard'); }); +//USER +Route::middleware(['auth', App\Http\Middleware\IsUser::class]) + ->prefix('user') + ->name('user.') + ->group(function () { + Route::get('/dashboard', [UserDashboardController::class, 'index'])->name('dashboard'); + Route::get('/diagnosa', [DiagnosaController::class, 'index'])->name('diagnosa.index'); + Route::post('/diagnosa', [DiagnosaController::class, 'proses'])->name('diagnosa.proses'); + Route::get('/diagnosa/hasil/{id}', [DiagnosaController::class, 'hasil'])->name('diagnosa.hasil'); + Route::get('/diagnosa/riwayat', [DiagnosaController::class, 'riwayat'])->name('diagnosa.riwayat'); + Route::get('/artikel/budidaya', [ArtikelUserController::class, 'budidaya'])->name('artikel.budidaya'); + Route::get('/artikel/budidaya/{slug}', [ArtikelUserController::class, 'detailBudidaya'])->name('artikel.budidaya.detail'); + Route::get('/artikel/hama-penyakit', [ArtikelUserController::class, 'hamaPenyakit'])->name('artikel.hama-penyakit'); + Route::get('/artikel/hama-penyakit/{slug}', [ArtikelUserController::class, 'detailHamaPenyakit'])->name('artikel.hama-penyakit.detail'); + }); // Super Admin Routes Route::middleware(['auth', App\Http\Middleware\IsSuperAdmin::class])->prefix('super-admin')->name('super-admin.')->group(function () { @@ -36,7 +53,7 @@ Route::resource('users', App\Http\Controllers\SuperAdmin\UserManagementController::class); }); -// Admin Routes (kalau ada) +// Admin Routes Route::middleware(['auth', App\Http\Middleware\IsAdmin::class]) ->prefix('admin') ->name('admin.')