NIM_E31222518/app/Http/Controllers/Admin/BarangController.php

119 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Barang;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
class BarangController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->middleware(\App\Http\Middleware\CheckRole::class . ':admin');
}
public function index()
{
$barang = Barang::latest()->get();
return view('admin.barang.index', compact('barang'));
}
public function create()
{
return view('admin.barang.create');
}
public function store(Request $request)
{
$request->validate([
'nama' => 'required|string|max:255',
'deskripsi' => 'required|string',
'harga' => 'required|numeric|min:0',
'stok' => 'required|integer|min:0',
'kategori' => 'required|string|max:100',
'gambar' => 'required|image|mimes:jpeg,png,jpg|max:2048',
]);
$data = [
'nama_barang' => $request->nama,
'deskripsi' => $request->deskripsi,
'harga' => $request->harga,
'stok' => $request->stok,
'kategori' => $request->kategori,
'slug' => Str::slug($request->nama) . '-' . Str::random(5),
];
if ($request->hasFile('gambar')) {
$gambar = $request->file('gambar');
// Simpan dengan nama asli
$fileName = $gambar->getClientOriginalName();
$path = $gambar->storeAs('products', $fileName, 'public');
$data['gambar'] = $path;
}
Barang::create($data);
return redirect()->route('admin.barang.index')
->with('success', 'Barang berhasil ditambahkan');
}
public function show(Barang $barang)
{
return view('admin.barang.show', compact('barang'));
}
public function edit(Barang $barang)
{
return view('admin.barang.edit', compact('barang'));
}
public function update(Request $request, Barang $barang)
{
$request->validate([
'nama' => 'required|string|max:255',
'deskripsi' => 'required|string',
'harga' => 'required|numeric|min:0',
'stok' => 'required|integer|min:0',
'kategori' => 'required|string|max:100',
'gambar' => 'nullable|image|mimes:jpeg,png,jpg|max:2048',
]);
$data = [
'nama_barang' => $request->nama,
'deskripsi' => $request->deskripsi,
'harga' => $request->harga,
'stok' => $request->stok,
'kategori' => $request->kategori,
];
if ($request->hasFile('gambar')) {
// Hapus gambar lama jika ada
if ($barang->gambar) {
Storage::disk('public')->delete($barang->gambar);
}
$data['gambar'] = $request->file('gambar')->store('products', 'public');
}
$barang->update($data);
return redirect()->route('admin.barang.index')
->with('success', 'Barang berhasil diupdate');
}
public function destroy(Barang $barang)
{
// Hapus gambar jika ada
if ($barang->gambar) {
Storage::disk('public')->delete($barang->gambar);
}
$barang->delete();
return redirect()->route('admin.barang.index')
->with('success', 'Barang berhasil dihapus');
}
}