From 98e112dec2dcf8e74c1a65fdb010b9da0913a4af Mon Sep 17 00:00:00 2001 From: rahmagustin Date: Thu, 22 Jan 2026 23:37:34 +0700 Subject: [PATCH] add aduan --- app/Http/Controllers/AduanController.php | 55 ++++++++++++++- resources/views/user/aduan-tps.blade.php | 82 ++++++++++++++++------- resources/views/user/detail-tps.blade.php | 2 +- resources/views/user/sig-tps.blade.php | 2 +- resources/views/user/template.blade.php | 2 +- routes/web.php | 3 +- 6 files changed, 114 insertions(+), 32 deletions(-) diff --git a/app/Http/Controllers/AduanController.php b/app/Http/Controllers/AduanController.php index f071ca2..e1ae4dd 100644 --- a/app/Http/Controllers/AduanController.php +++ b/app/Http/Controllers/AduanController.php @@ -3,12 +3,61 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\Models\AduanTps; +use App\Models\LokasiTps; class AduanController extends Controller { - public function index() + public function index(Request $request) { - $title = 'User Aduan'; - return view('user.aduan-tps', compact('title')); + $title = 'Aduan TPS'; + + // TPS terpilih (jika dari SIG / detail) + $tps = null; + if ($request->filled('tps_id')) { + $tps = LokasiTps::with('kategori') + ->where('id_tps', $request->tps_id) + ->first(); + } + + // List TPS untuk dropdown (jika dari navbar) + $listTps = LokasiTps::orderBy('nama_tps')->get(); + + return view('user.aduan-tps', compact( + 'title', + 'tps', + 'listTps' + )); + } + + public function store(Request $request) + { + $request->validate([ + 'lokasi_tps_id' => 'required|exists:lokasi_tps,id_tps', + 'nama_pelapor' => 'required', + 'alamat_pelapor'=> 'required', + 'no_pelapor' => 'required', + 'isi_aduan' => 'required', + 'bukti_foto' => 'nullable|image|max:2048' + ]); + + $foto = null; + if ($request->hasFile('bukti_foto')) { + $foto = $request->file('bukti_foto')->store('aduan', 'public'); + } + + AduanTps::create([ + 'lokasi_tps_id' => $request->lokasi_tps_id, + 'nama_pelapor' => $request->nama_pelapor, + 'alamat_pelapor'=> $request->alamat_pelapor, + 'no_pelapor' => $request->no_pelapor, + 'isi_aduan' => $request->isi_aduan, + 'tanggal_aduan' => now(), + 'bukti_foto' => $foto + ]); + + return redirect() + ->route('user.aduan') + ->with('success', 'Aduan berhasil dikirim'); } } diff --git a/resources/views/user/aduan-tps.blade.php b/resources/views/user/aduan-tps.blade.php index 41ec777..0d22b3f 100644 --- a/resources/views/user/aduan-tps.blade.php +++ b/resources/views/user/aduan-tps.blade.php @@ -21,40 +21,47 @@
-
-

Get in touch

-

Et id eius voluptates atque nihil voluptatem enim in tempore minima sit ad mollitia commodi - minus.

-
- -
-

Location:

-

A108 Adam Street, New York, NY 535022

-
-
+

TPS yang Diadukan

-
- -
-

Email:

-

info@example.com

-
-
+ {{-- FOTO TPS --}} +
+ Foto TPS +
-
- -
-

Call:

-

+1 5589 55488 55

-
-
+ {{-- INFO TPS --}} +
+ @if ($tps) +

{{ $tps->nama_tps }}

+

{{ $tps->alamat_tps }}

+ + @else +

+ Silakan pilih TPS yang akan diadukan +

+ + + @endif +
+
+
@@ -88,4 +95,29 @@
+ + @endsection diff --git a/resources/views/user/detail-tps.blade.php b/resources/views/user/detail-tps.blade.php index 4981718..635e85f 100644 --- a/resources/views/user/detail-tps.blade.php +++ b/resources/views/user/detail-tps.blade.php @@ -90,7 +90,7 @@ class="img-fluid" alt=""> Laporkan jika TPS bermasalah atau penuh - Adukan TPS diff --git a/resources/views/user/sig-tps.blade.php b/resources/views/user/sig-tps.blade.php index e560e12..6ed2deb 100644 --- a/resources/views/user/sig-tps.blade.php +++ b/resources/views/user/sig-tps.blade.php @@ -159,7 +159,7 @@ function markerIcon(color) { Detail TPS - Aduan diff --git a/resources/views/user/template.blade.php b/resources/views/user/template.blade.php index 4c0fc8d..72d5896 100644 --- a/resources/views/user/template.blade.php +++ b/resources/views/user/template.blade.php @@ -52,7 +52,7 @@
  • Sebaran TPS
  • -
  • Aduan TPS
  • +
  • Aduan TPS
  • Kontak
  • diff --git a/routes/web.php b/routes/web.php index 5f4c7ed..fce33f8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -31,7 +31,8 @@ Route::get('/sig-tps', [SigController::class, 'index'])->name('user.sig-tps'); Route::get('/tps/{id}', [SigController::class, 'show'])->name('user.detail-tps'); -Route::get('/aduan-tps', [AduanController::class, 'index'])->name('user.aduan-tps'); +Route::get('/aduan-tps', [AduanController::class, 'index'])->name('user.aduan'); +Route::post('/aduan-tps', [AduanController::class, 'store'])->name('user.aduan.store'); Route::get('/kontak', [KontakController::class, 'index'])->name('user.kontak'); /*