gambar kategori

This commit is contained in:
rahmagustin 2026-03-13 04:54:34 +07:00
parent 72b51b00a3
commit 622e7e6e8c
1 changed files with 61 additions and 64 deletions

View File

@ -3,129 +3,126 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\KategoriTps;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\KategoriTps;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class KategoriTpsController extends Controller class KategoriTpsController extends Controller
{ {
// Tampilkan data kategori
public function index(Request $request) public function index(Request $request)
{ {
$title = 'Kategori TPS';
$search = $request->search; $search = $request->search;
$kategori = KategoriTps::when($search, function ($query) use ($search) { $kategori = KategoriTps::when($search, function ($query) use ($search) {
$query->where('nama_kategori', 'like', '%' . $search . '%'); $query->where('nama_kategori', 'like', '%' . $search . '%');
}) })
->orderBy('id_kategori_tps', 'desc') ->orderBy('id_kategori_tps', 'desc')
->paginate(10); ->paginate(10);
return view('admin.kategori-tps.index', compact('title', 'kategori')); return view('admin.kategori-tps.index', compact('kategori'));
} }
// Form tambah
public function create() public function create()
{ {
$title = 'Tambah Kategori TPS'; return view('admin.kategori-tps.create');
return view('admin.kategori-tps.create', compact('title'));
} }
// Simpan kategori
public function store(Request $request) public function store(Request $request)
{ {
$data = $request->validate( $validator = Validator::make($request->all(), [
[ 'nama_kategori' => 'required|string|max:100',
'nama_kategori' => 'required|string|max:100', 'kepanjangan_kategori' => 'required|string|max:255',
'kepanjangan_kategori' => 'required|string|max:255', 'deskripsi' => 'required|string',
'deskripsi' => 'required|string', 'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048',
'foto_kategori' => 'required|image|mimes:jpg,jpeg,png|max:2048', ], [
], 'nama_kategori.required' => 'Nama kategori wajib diisi',
[ 'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi',
'nama_kategori.required' => 'Nama kategori wajib diisi', 'deskripsi.required' => 'Deskripsi wajib diisi',
'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi', ]);
'deskripsi.required' => 'Deskripsi kategori wajib diisi',
'foto_kategori.required' => 'Foto kategori wajib diunggah', if ($validator->fails()) {
'foto_kategori.image' => 'File harus berupa gambar', return redirect()->back()->withErrors($validator)->withInput();
'foto_kategori.mimes' => 'Format gambar harus JPG, JPEG, atau PNG', }
'foto_kategori.max' => 'Ukuran gambar maksimal 2 MB',
] $data = $request->only(
'nama_kategori',
'kepanjangan_kategori',
'deskripsi'
); );
// Upload foto ke public/assets/admin/images/kategori-tps // Upload foto
if ($request->hasFile('foto_kategori')) { if ($request->hasFile('foto_kategori')) {
$file = $request->file('foto_kategori'); $data['foto_kategori'] = $request->file('foto_kategori')
$filename = strtolower(str_replace(' ', '_', $request->nama_kategori)) ->store('kategori-tps', 'public');
. '_' . time()
. '.' . $file->getClientOriginalExtension();
$file->move(public_path('assets/admin/images/kategori-tps'), $filename);
$data['foto_kategori'] = $filename;
} }
KategoriTps::create($data); KategoriTps::create($data);
return redirect() return redirect()->route('admin.kategori.index')
->route('admin.kategori.index')
->with('success', 'Kategori TPS berhasil ditambahkan'); ->with('success', 'Kategori TPS berhasil ditambahkan');
} }
// Form edit
public function edit($id) public function edit($id)
{ {
$title = 'Edit Kategori TPS';
$kategori = KategoriTps::findOrFail($id); $kategori = KategoriTps::findOrFail($id);
return view('admin.kategori-tps.edit', compact('title', 'kategori')); return view('admin.kategori-tps.edit', compact('kategori'));
} }
// Update kategori
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$kategori = KategoriTps::findOrFail($id); $kategori = KategoriTps::findOrFail($id);
$data = $request->validate( $validator = Validator::make($request->all(), [
[ 'nama_kategori' => 'required|string|max:100',
'nama_kategori' => 'required|string|max:100', 'kepanjangan_kategori' => 'required|string|max:255',
'kepanjangan_kategori' => 'required|string|max:255', 'deskripsi' => 'required|string',
'deskripsi' => 'required|string', 'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048',
'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]);
],
[ if ($validator->fails()) {
'nama_kategori.required' => 'Nama kategori wajib diisi', return redirect()->back()->withErrors($validator)->withInput();
'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi', }
'deskripsi.required' => 'Deskripsi kategori wajib diisi',
'foto_kategori.image' => 'File harus berupa gambar', $data = $request->only(
'foto_kategori.mimes' => 'Format gambar harus JPG, JPEG, atau PNG', 'nama_kategori',
'foto_kategori.max' => 'Ukuran gambar maksimal 2 MB', 'kepanjangan_kategori',
] 'deskripsi'
); );
if ($request->hasFile('foto_kategori')) { if ($request->hasFile('foto_kategori')) {
// Hapus foto lama jika ada
if ($kategori->foto_kategori && file_exists(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori))) { if ($kategori->foto_kategori) {
unlink(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori)); Storage::disk('public')->delete($kategori->foto_kategori);
} }
$file = $request->file('foto_kategori'); $data['foto_kategori'] = $request->file('foto_kategori')
$filename = strtolower(str_replace(' ', '_', $request->nama_kategori)) ->store('kategori-tps', 'public');
. '_' . time()
. '.' . $file->getClientOriginalExtension();
$file->move(public_path('assets/admin/images/kategori-tps'), $filename);
$data['foto_kategori'] = $filename;
} }
$kategori->update($data); $kategori->update($data);
return redirect() return redirect()->route('admin.kategori.index')
->route('admin.kategori.index')
->with('success', 'Kategori TPS berhasil diperbarui'); ->with('success', 'Kategori TPS berhasil diperbarui');
} }
// Hapus kategori
public function destroy($id) public function destroy($id)
{ {
$kategori = KategoriTps::findOrFail($id); $kategori = KategoriTps::findOrFail($id);
if ($kategori->foto_kategori && file_exists(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori))) { if ($kategori->foto_kategori) {
unlink(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori)); Storage::disk('public')->delete($kategori->foto_kategori);
} }
$kategori->delete(); $kategori->delete();
return redirect() return redirect()->route('admin.kategori.index')
->route('admin.kategori.index')
->with('success', 'Kategori TPS berhasil dihapus'); ->with('success', 'Kategori TPS berhasil dihapus');
} }
} }