latest()->paginate(10); return view('beritas.index', compact('beritas')); } /** * Show the form for creating a new resource. */ public function create() { return view('beritas.create'); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $validated = $request->validate([ 'judul' => 'required|string|max:255', 'kategori' => 'required|string|max:255', 'ringkasan' => 'required|string', 'isi' => 'required|string', 'gambar' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', 'penulis' => 'required|string|max:255', 'status' => 'required|in:draft,published', ]); // Handle file upload if ($request->hasFile('gambar')) { $path = $request->file('gambar')->store('berita', 'public'); $validated['gambar'] = $path; } $validated['user_id'] = Auth::id(); Berita::create($validated); return redirect()->route('beritas.index') ->with('success', 'Berita berhasil ditambahkan!'); } /** * Display the specified resource. */ public function show(Berita $berita) { $berita->load('user'); return view('beritas.show', compact('berita')); } /** * Show the form for editing the specified resource. */ public function edit(Berita $berita) { return view('beritas.edit', compact('berita')); } /** * Update the specified resource in storage. */ public function update(Request $request, Berita $berita) { $validated = $request->validate([ 'judul' => 'required|string|max:255', 'kategori' => 'required|string|max:255', 'ringkasan' => 'required|string', 'isi' => 'required|string', 'gambar' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', 'penulis' => 'required|string|max:255', 'status' => 'required|in:draft,published', ]); // Handle file upload if ($request->hasFile('gambar')) { // Delete old image if exists if ($berita->gambar) { Storage::disk('public')->delete($berita->gambar); } $path = $request->file('gambar')->store('berita', 'public'); $validated['gambar'] = $path; } $berita->update($validated); return redirect()->route('beritas.index') ->with('success', 'Berita berhasil diperbarui!'); } /** * Remove the specified resource from storage. */ public function destroy(Berita $berita) { // Delete image if exists if ($berita->gambar) { Storage::disk('public')->delete($berita->gambar); } $berita->delete(); return redirect()->route('beritas.index') ->with('success', 'Berita berhasil dihapus!'); } } namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; use App\Models\Berita; use Illuminate\Http\Request; class BeritaApiController extends Controller { public function index(Request $request) { $berita = Berita::latest()->get(); return response()->json($berita); } }