get(); $additional = Additional::latest()->get(); return view('admin.paket-foto.index', compact('foto', 'additional')); } public function store(FotoRequest $request) { $data = $request->validated(); $data['id_user'] = Auth::id(); if ($request->hasFile('foto')) { $file = $request->file('foto'); $filename = time() . '_' . $file->getClientOriginalName(); $path = $file->storeAs('img/foto', $filename, 'public'); $data['foto'] = $path; } PaketFoto::create($data); return redirect()->back()->with('success', 'Paket foto baru berhasil ditambahkan!'); } public function update(FotoRequest $request, string $id) { $paket = PaketFoto::findOrFail($id); $data = $request->validated(); $data['id_user'] = Auth::id(); if ($request->hasFile('foto')) { if ($paket->foto) { Storage::disk('public')->delete($paket->foto); } $file = $request->file('foto'); $filename = time() . '_' . $file->getClientOriginalName(); $data['foto'] = $file->storeAs('img/foto', $filename, 'public'); } $paket->update($data); return redirect()->back()->with('success', 'Paket foto berhasil diperbarui!'); } public function destroy(string $id) { $paket = PaketFoto::findOrFail($id); if (Auth::user()->role !== 'admin_foto' && Auth::user()->role !== 'owner') { return redirect()->back()->with('error', 'Anda tidak memiliki akses untuk menghapus paket ini!'); } if ($paket->foto) { Storage::disk('public')->delete($paket->foto); } $paket->delete(); return redirect()->back()->with('success', 'Paket foto dan filenya berhasil dihapus!'); } }