feat: associate PaketFoto with User model and update FotoController for user ID handling

This commit is contained in:
LailaWulandarii 2026-02-27 08:51:26 +07:00
parent fcc1ab0c04
commit 6fa0d1a1da
3 changed files with 16 additions and 0 deletions

View File

@ -7,6 +7,7 @@
use App\Models\PaketFoto; use App\Models\PaketFoto;
use App\Http\Requests\Admin\FotoRequest; // Gunakan Request baru use App\Http\Requests\Admin\FotoRequest; // Gunakan Request baru
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Auth;
class FotoController extends Controller class FotoController extends Controller
{ {
@ -20,12 +21,14 @@ public function index()
public function store(FotoRequest $request) public function store(FotoRequest $request)
{ {
$data = $request->validated(); $data = $request->validated();
$data['id_user'] = Auth::id();
if ($request->hasFile('foto')) { if ($request->hasFile('foto')) {
$file = $request->file('foto'); $file = $request->file('foto');
$filename = time() . '_' . $file->getClientOriginalName(); $filename = time() . '_' . $file->getClientOriginalName();
$path = $file->storeAs('img/foto', $filename, 'public'); $path = $file->storeAs('img/foto', $filename, 'public');
$data['foto'] = $path; $data['foto'] = $path;
} }
PaketFoto::create($data); PaketFoto::create($data);
return redirect()->back()->with('success', 'Paket foto baru berhasil ditambahkan!'); return redirect()->back()->with('success', 'Paket foto baru berhasil ditambahkan!');
} }
@ -34,6 +37,7 @@ public function update(FotoRequest $request, string $id)
{ {
$paket = PaketFoto::findOrFail($id); $paket = PaketFoto::findOrFail($id);
$data = $request->validated(); $data = $request->validated();
$data['id_user'] = Auth::id();
if ($request->hasFile('foto')) { if ($request->hasFile('foto')) {
if ($paket->foto) { if ($paket->foto) {
Storage::disk('public')->delete($paket->foto); Storage::disk('public')->delete($paket->foto);
@ -49,6 +53,9 @@ public function update(FotoRequest $request, string $id)
public function destroy(string $id) public function destroy(string $id)
{ {
$paket = PaketFoto::findOrFail($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) { if ($paket->foto) {
Storage::disk('public')->delete($paket->foto); Storage::disk('public')->delete($paket->foto);
} }

View File

@ -18,10 +18,15 @@ class PaketFoto extends Model
'harga', 'harga',
'foto', 'foto',
'durasi', 'durasi',
'id_user',
]; ];
public function booking() public function booking()
{ {
return $this->hasMany(BookingFoto::class, 'id_paket'); return $this->hasMany(BookingFoto::class, 'id_paket');
} }
public function user()
{
return $this->belongsTo(User::class, 'id_user');
}
} }

View File

@ -27,4 +27,8 @@ class User extends Authenticatable
'password', 'password',
'remember_token', 'remember_token',
]; ];
public function paketFotos()
{
return $this->hasMany(PaketFoto::class, 'id_user');
}
} }