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

139 lines
4.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use DB;
class BeritaController extends Controller
{
public function index(Request $request)
{
$query = DB::table('berita');
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('kategori_berita')) {
$query->where('kategori_berita', '=', $request->kategori_berita);
}
$tabel_berita = $query->orderBy('created_at', 'DESC')->paginate(10);
return view('Berita/Berita', ['tabel_berita' => $tabel_berita]);
}
public function edit($id)
{
$data = DB::table('berita')->where('id', $id)->first();
if (!$data) {
return redirect()->back()->with('error', 'Data tidak ditemukan');
}
return view('Berita/Edit Berita', ['berita' => $data]);
}
public function update(Request $request, $id)
{
$request->validate([
'judul' => 'required|string|max:255',
'tanggal_publikasi' => 'required|date',
'kategori_berita' => 'required|string',
'isi_berita' => 'required|string',
'file' => 'nullable|mimes:jpeg,jpg,png|max:10240'
]);
$data = DB::table('berita')->where('id', $id)->first();
if (!$data) {
return redirect()->back()->with('error', 'Data tidak ditemukan');
}
$updateData = [
'judul' => $request->judul,
'created_at' => $request->tanggal_publikasi,
'kategori_berita' => $request->kategori_berita,
'isi_berita' => $request->isi_berita,
];
if ($request->hasFile('file')) {
$file = $request->file('file');
$fileName = 'Foto Berita ' . $id . '.' . $file->getClientOriginalExtension();
if ($data->gambar_url) {
Storage::disk('public')->delete('Berita/' . $data->gambar_url);
}
$file->storeAs('Berita', $fileName, 'public');
$updateData['gambar_url'] = $fileName;
}
DB::table('berita')->where('id', $id)->update($updateData);
return redirect()->route('Berita')->with('edit_success', true);
}
public function upload()
{
return view('Berita/Upload Berita');
}
public function store(Request $request)
{
$request->validate([
'judul' => 'required|string|max:255',
'tanggal_publikasi' => 'required|date',
'kategori_berita' => 'required|string',
'isi_berita' => 'required|string',
'file' => 'mimes:jpeg,jpg,png|max:10240'
]);
$Data = [
'judul' => $request->judul,
'created_at' => $request->tanggal_publikasi,
'kategori_berita' => $request->kategori_berita,
'isi_berita' => $request->isi_berita,
'id_akun' => auth()->id(),
];
if ($request->hasFile('file')) {
$file = $request->file('file');
$fileName = 'Foto Berita ' . time() . '.' . $file->getClientOriginalExtension();
$file->storeAs('Berita', $fileName, 'public');
$Data['gambar_url'] = $fileName;
}
DB::table('berita')->insert($Data);
return redirect()->route('Berita')->with('upload_success', true);
}
public function destroy($id)
{
$data = DB::table('berita')->where('id', $id)->first();
if (!$data) {
return redirect()->route('Berita')->with('error', 'Data tidak ditemukan');
}
if ($data->gambar_url) {
Storage::disk('public')->delete('Berita/' . $data->gambar_url);
}
DB::table('berita')->where('id', $id)->delete();
return redirect()->route('Berita')->with('delete_success', true);
}
}