TIF_NGANJUK_E41220949/app/Http/Controllers/Admin/AduanController.php

82 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\AduanTps;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class AduanController extends Controller
{
/**
* Tampilkan semua aduan
*/
public function index(Request $request)
{
$search = $request->search;
$aduan = AduanTps::with('lokasiTps')
->when($search, function ($query) use ($search) {
$query->whereHas('lokasiTps', function ($q) use ($search) {
$q->where('nama_tps', 'like', '%' . $search . '%');
});
})
->orderBy('tanggal_aduan', 'desc')
->paginate(10);
return view('admin.aduan.index', compact('aduan'));
}
/**
* Detail aduan
*/
public function show($id)
{
$aduan = AduanTps::findOrFail($id);
return view('admin.aduan.edit', compact('aduan'));
}
/**
* Simpan tanggapan admin
*/
public function tanggapi(Request $request, $id)
{
$request->validate([
'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);
$aduan->tanggapan_admin = $request->tanggapan_admin;
$aduan->tanggal_tanggapan = now();
$aduan->save();
return redirect()->route('admin.aduan.index')
->with('success', 'Tanggapan berhasil disimpan');
}
/**
* Hapus aduan
*/
public function destroy($id)
{
$aduan = AduanTps::findOrFail($id);
// Hapus foto bukti dari storage
if ($aduan->bukti_foto && Storage::disk('public')->exists($aduan->bukti_foto)) {
Storage::disk('public')->delete($aduan->bukti_foto);
}
// Hapus data dari database
$aduan->delete();
return redirect()->route('admin.aduan.index')
->with('success', 'Aduan berhasil dihapus');
}
}