TIF_NGANJUK_E41220949/app/Http/Controllers/AduanController.php

85 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\AduanTps;
use App\Models\LokasiTps;
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(
'title',
'tps',
'listTps'
));
}
/**
* 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|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',
'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,
'alamat_pelapor'=> $request->alamat_pelapor,
'no_pelapor' => $request->no_pelapor,
'isi_aduan' => $request->isi_aduan,
'bukti_foto' => $fotoPath,
'tanggal_aduan' => now(),
]);
return redirect()
->route('user.aduan')
->with('success', 'Aduan berhasil dikirim');
}
}