diff --git a/app/Http/Controllers/Admin/AduanController.php b/app/Http/Controllers/Admin/AduanController.php index fc93fab..bbfd81b 100644 --- a/app/Http/Controllers/Admin/AduanController.php +++ b/app/Http/Controllers/Admin/AduanController.php @@ -29,7 +29,11 @@ public function show($id) public function tanggapi(Request $request, $id) { $request->validate([ - 'tanggapan_admin' => 'required' + 'tanggapan_admin' => 'required|string|min:5|max:1000' + ], [ + 'tanggapan_admin.required' => 'Tanggapan admin wajib diisi.', + 'tanggapan_admin.min' => 'Tanggapan minimal 5 karakter.', + 'tanggapan_admin.max' => 'Tanggapan maksimal 1000 karakter.', ]); $aduan = AduanTps::findOrFail($id); diff --git a/app/Http/Controllers/Admin/ProfilController.php b/app/Http/Controllers/Admin/ProfilController.php index 13a23c1..2a254e5 100644 --- a/app/Http/Controllers/Admin/ProfilController.php +++ b/app/Http/Controllers/Admin/ProfilController.php @@ -20,49 +20,46 @@ public function update(Request $request) { $admin = Auth::user(); - $request->validate([ - 'name' => 'required|string|max:255', - 'username' => 'required|string|max:100', - 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', - 'password' => 'nullable|min:6|confirmed', - ]); + $request->validate( + [ + 'name' => 'required|string|max:255', + 'username' => 'required|string|max:100|unique:users,username,' . $admin->id_users . ',id_users', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', + 'password' => 'nullable|min:6|confirmed', + ], + [ + 'name.required' => 'Nama wajib diisi', + 'username.required' => 'Username wajib diisi', + 'username.unique' => 'Username sudah digunakan', + 'foto.image' => 'File harus berupa gambar', + 'foto.mimes' => 'Format foto harus JPG atau PNG', + 'foto.max' => 'Ukuran foto maksimal 2 MB', + 'password.min' => 'Password minimal 6 karakter', + 'password.confirmed' => 'Konfirmasi password tidak cocok', + ] + ); - // ====================== - // UPDATE DATA DASAR - // ====================== - $admin->name = $request->name; + // update data dasar + $admin->name = $request->name; $admin->username = $request->username; - // ====================== - // PROSES FOTO - // ====================== + // upload foto if ($request->hasFile('foto')) { - $path = public_path('assets/admin/foto-admin'); - - // buat folder kalau belum ada - if (!File::exists($path)) { - File::makeDirectory($path, 0755, true); - } - // hapus foto lama - if ($admin->foto && File::exists($path.'/'.$admin->foto)) { - File::delete($path.'/'.$admin->foto); + if ($admin->foto && file_exists(public_path('assets/admin/foto-admin/' . $admin->foto))) { + unlink(public_path('assets/admin/foto-admin/' . $admin->foto)); } $file = $request->file('foto'); - $namaFoto = time().'_'.uniqid().'.'.$file->getClientOriginalExtension(); + $namaFoto = time() . '_' . uniqid() . '.' . $file->getClientOriginalExtension(); - // SIMPAN FOTO (INI KUNCI) - $file->move($path, $namaFoto); + $file->move(public_path('assets/admin/foto-admin'), $namaFoto); - // simpan ke DB $admin->foto = $namaFoto; } - // ====================== - // PASSWORD - // ====================== + // update password jika diisi if ($request->filled('password')) { $admin->password = Hash::make($request->password); } diff --git a/app/Http/Controllers/AduanController.php b/app/Http/Controllers/AduanController.php index 67b8e2d..91b5f3f 100644 --- a/app/Http/Controllers/AduanController.php +++ b/app/Http/Controllers/AduanController.php @@ -8,16 +8,20 @@ class AduanController extends Controller { - + /** + * Menampilkan halaman form aduan TPS + */ public function index(Request $request) { $title = 'Aduan TPS'; $tps = null; + if ($request->filled('tps_id')) { $tps = LokasiTps::with('kategori') ->where('id_tps', $request->tps_id) ->first(); } + $listTps = LokasiTps::orderBy('nama_tps')->get(); return view('user.aduan-tps', compact( @@ -27,24 +31,42 @@ public function index(Request $request) )); } + /** + * Menyimpan data aduan TPS + */ public function store(Request $request) { $request->validate([ - 'lokasi_tps_id' => 'required|exists:lokasi_tps,id_tps', - 'nama_pelapor' => 'required|string|max:100', - 'alamat_pelapor'=> 'required|string', - 'no_pelapor' => 'required|string|max:20', - 'isi_aduan' => 'required|string', - 'bukti_foto' => 'required|image|mimes:jpg,jpeg,png|max:4096', + 'lokasi_tps_id' => 'required|exists:lokasi_tps,id_tps', + 'nama_pelapor' => 'required|string|max:100', + 'alamat_pelapor' => 'required|string', + 'no_pelapor' => 'required|digits_between:1,13|regex:/^[0-9]+$/', + 'isi_aduan' => 'required|string', + 'bukti_foto' => 'required|image|mimes:jpg,jpeg,png|max:4096', ], [ - 'lokasi_tps_id.required' => 'TPS wajib dipilih', - 'bukti_foto.required' => 'Foto bukti wajib diunggah', - 'bukti_foto.image' => 'File harus berupa gambar', + 'lokasi_tps_id.required' => 'TPS wajib dipilih', + 'lokasi_tps_id.exists' => 'TPS tidak valid', + + 'nama_pelapor.required' => 'Nama pelapor wajib diisi', + 'alamat_pelapor.required' => 'Alamat pelapor wajib diisi', + + 'no_pelapor.required' => 'Nomor HP wajib diisi', + 'no_pelapor.digits_between'=> 'Nomor HP maksimal 13 angka', + 'no_pelapor.regex' => 'Nomor HP hanya boleh berisi angka', + + 'isi_aduan.required' => 'Isi aduan wajib diisi', + + 'bukti_foto.required' => 'Foto bukti wajib diunggah', + 'bukti_foto.image' => 'File harus berupa gambar', + 'bukti_foto.mimes' => 'Format gambar harus jpg, jpeg, atau png', + 'bukti_foto.max' => 'Ukuran gambar maksimal 4 MB', ]); + // Upload foto bukti $fotoPath = $request->file('bukti_foto') ->store('aduan', 'public'); + // Simpan ke database AduanTps::create([ 'lokasi_tps_id' => $request->lokasi_tps_id, 'nama_pelapor' => $request->nama_pelapor, diff --git a/resources/views/admin/aduan/edit.blade.php b/resources/views/admin/aduan/edit.blade.php index ee5d1ed..24bab07 100644 --- a/resources/views/admin/aduan/edit.blade.php +++ b/resources/views/admin/aduan/edit.blade.php @@ -1,94 +1,83 @@ @extends('admin.template') @section('content') -
- Form tanggapan admin terhadap aduan masyarakat -
++ Form tanggapan admin terhadap aduan masyarakat +
- + {{-- Isi Aduan --}} +