Website-E-Bendungan/app/Http/Controllers/AspirasiController.php

96 lines
2.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use DB;
class AspirasiController extends Controller
{
public function index(Request $request)
{
$query = DB::table('aspirasi');
if ($request->filled('search')) {
$query->where(function ($q) use ($request) {
$q->where('judul', 'LIKE', "%{$request->search}%");
});
}
if ($request->filled('date')) {
$query->whereDate('created_at', '=', date('Y-m-d', strtotime($request->date)));
}
if ($request->filled('status')) {
$query->where('status', '=', $request->status);
}
$tabel_aspirasi = $query->orderByRaw("
CASE
WHEN status = 'Diproses' THEN 1
ELSE 2
END
")->orderBy('created_at', 'DESC')->paginate(9);
$countDiproses = [
'aspirasi' => DB::table('aspirasi')->where('status', 'Diproses')->count(),
'keluhan' => DB::table('keluhan')->where('status', 'Diproses')->count(),
];
return view('Aspirasi & Keluhan/Aspirasi', [
'tabel_aspirasi' => $tabel_aspirasi,
'countDiproses' => $countDiproses
]);
}
public function detail($id)
{
$data = DB::table('aspirasi')->where('id', $id)->first();
if (!$data) {
return redirect()->back()->with('error', 'Data tidak ditemukan');
}
return view('Aspirasi & Keluhan/Detail Aspirasi', compact('data'));
}
public function edit($id)
{
$data = DB::table('aspirasi')->where('id', $id)->first();
if (!$data) {
return redirect()->back()->with('error', 'Data tidak ditemukan');
}
return view('Aspirasi & Keluhan/Form Aspirasi', compact('data'));
}
public function update(Request $request, $id)
{
$request->validate([
'status' => 'required|in:Diproses,Ditolak,Selesai',
'file' => 'nullable|mimes:doc,docx,xls,xlsx,pdf|max:10240'
]);
$data = DB::table('aspirasi')->where('id', $id)->first();
if (!$data) {
return redirect()->back()->with('error', 'Data tidak ditemukan');
}
$updateData = ['status' => $request->status];
if ($request->hasFile('file')) {
$file = $request->file('file');
$fileName = 'Dokumen Aspirasi ' . $id . '.' . $file->getClientOriginalExtension();
$file->storeAs('File Aspirasi', $fileName, 'public');
$updateData['file_hasil'] = $fileName;
}
DB::table('aspirasi')->where('id', $id)->update($updateData);
return redirect()->route('Aspirasi')->with('manage_success', true);
}
}