diff --git a/backend/app/Http/Controllers/FiturController.php b/backend/app/Http/Controllers/FiturController.php index aef9bba..92a0bef 100644 --- a/backend/app/Http/Controllers/FiturController.php +++ b/backend/app/Http/Controllers/FiturController.php @@ -11,51 +11,46 @@ class FiturController extends Controller // Tampilkan semua fitur (halaman admin) public function index() { - $fiturs = Fitur::all(); - return view('fiturs.index', compact('fiturs')); + $fitur = Fitur::all(); + return view('admin.fitur.index', compact('fitur')); } // Form tambah fitur public function create() { - return view('fiturs.create'); + return view('admin.fitur.create'); } // Simpan fitur baru - public function store(Request $request) - { - $data = $request->validate([ - 'deskripsi' => 'required|string', - ]); +public function store(Request $request) +{ + $data = $request->validate([ + 'deskripsi' => 'required|string', + ]); - Fitur::create($data); + Fitur::create($data); - return redirect()->route('fiturs.index')->with('success', 'Fitur berhasil ditambahkan!'); - } + return redirect()->route('admin.fitur.index')->with('success', 'Fitur berhasil ditambahkan!'); +} - // Form edit fitur - public function edit(Fitur $fitur) - { - return view('fiturs.edit', compact('fitur')); - } +public function update(Request $request, Fitur $fitur) +{ + $data = $request->validate([ + 'deskripsi' => 'required|string', + ]); - // Update fitur - public function update(Request $request, Fitur $fitur) - { - $data = $request->validate([ - 'deskripsi' => 'required|string', - ]); + $fitur->update($data); + + return redirect()->route('admin.fitur.index')->with('success', 'Fitur berhasil diperbarui!'); +} - $fitur->update($data); - return redirect()->route('fiturs.index')->with('success', 'Fitur berhasil diperbarui!'); - } // Hapus fitur public function destroy(Fitur $fitur) { $fitur->delete(); - return redirect()->route('fiturs.index')->with('success', 'Fitur berhasil dihapus!'); + return redirect()->route('admin.fitur.index')->with('success', 'Fitur berhasil dihapus!'); } } diff --git a/backend/app/Http/Controllers/KategoriController.php b/backend/app/Http/Controllers/KategoriController.php index f2c2c61..59e4279 100644 --- a/backend/app/Http/Controllers/KategoriController.php +++ b/backend/app/Http/Controllers/KategoriController.php @@ -10,13 +10,13 @@ class KategoriController extends Controller { public function index() { - $kategoris = Kategori::all(); - return view('kategoris.index', compact('kategoris')); + $kategori = Kategori::all(); + return view('admin.kategori.index', compact('kategori')); } public function create() { - return view('kategoris.create'); + return view('admin.kategori.create'); } public function store(Request $request) @@ -24,16 +24,20 @@ class KategoriController extends Controller $data = $request->validate([ 'nama' => 'required|string|max:255', 'deskripsi' => 'nullable|string', - 'foto' => 'nullable|string', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', ]); + if ($request->hasFile('foto')) { + $data['foto'] = $request->file('foto')->store('kategori', 'public'); + } + Kategori::create($data); - return redirect()->route('kategoris.index')->with('success', 'Kategori berhasil ditambahkan!'); + return redirect()->route('admin.kategori.index')->with('success', 'Kategori berhasil ditambahkan!'); } public function edit(Kategori $kategori) { - return view('kategoris.edit', compact('kategori')); + return view('admin.kategori.edit', compact('kategori')); } public function update(Request $request, Kategori $kategori) @@ -41,16 +45,20 @@ class KategoriController extends Controller $data = $request->validate([ 'nama' => 'required|string|max:255', 'deskripsi' => 'nullable|string', - 'foto' => 'nullable|string', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', ]); + if ($request->hasFile('foto')) { + $data['foto'] = $request->file('foto')->store('kategori', 'public'); + } + $kategori->update($data); - return redirect()->route('kategoris.index')->with('success', 'Kategori berhasil diperbarui!'); + return redirect()->route('admin.kategori.index')->with('success', 'Kategori berhasil diperbarui!'); } public function destroy(Kategori $kategori) { $kategori->delete(); - return redirect()->route('kategoris.index')->with('success', 'Kategori berhasil dihapus!'); + return redirect()->route('admin.kategori.index')->with('success', 'Kategori berhasil dihapus!'); } } diff --git a/backend/app/Http/Controllers/PelangganController.php b/backend/app/Http/Controllers/PelangganController.php index a5f05f7..0675524 100644 --- a/backend/app/Http/Controllers/PelangganController.php +++ b/backend/app/Http/Controllers/PelangganController.php @@ -10,20 +10,20 @@ class PelangganController extends Controller // Tampilkan semua pelanggan (admin) public function index() { - $pelanggans = Pelanggan::with('details')->get(); - return view('pelanggans.index', compact('pelanggans')); + $pelanggans = Pelanggan::all(); + return view('admin.pelanggan.index', compact('pelanggans')); } // Detail pelanggan public function show(Pelanggan $pelanggan) { - return view('pelanggans.show', compact('pelanggan')); + return view('admin.pelanggan.show', compact('pelanggan')); } // Hapus pelanggan public function destroy(Pelanggan $pelanggan) { $pelanggan->delete(); - return redirect()->route('pelanggans.index')->with('success', 'Pelanggan berhasil dihapus!'); + return redirect()->route('admin.pelanggan.index')->with('success', 'Pelanggan berhasil dihapus!'); } } diff --git a/backend/app/Http/Controllers/TemplateController.php b/backend/app/Http/Controllers/TemplateController.php index 9c657cb..78cf437 100644 --- a/backend/app/Http/Controllers/TemplateController.php +++ b/backend/app/Http/Controllers/TemplateController.php @@ -6,20 +6,17 @@ use App\Models\Template; use App\Models\Kategori; use App\Models\Fitur; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Storage; class TemplateController extends Controller { public function index() { $templates = Template::with(['kategori','fitur'])->get(); - return view('templates.index', compact('templates')); - } - - public function create() - { $kategoris = Kategori::all(); $fiturs = Fitur::all(); - return view('templates.create', compact('kategoris', 'fiturs')); + + return view('admin.templates.index', compact('templates', 'kategoris', 'fiturs')); } public function store(Request $request) @@ -28,36 +25,56 @@ class TemplateController extends Controller 'nama_template' => 'required|string|max:255', 'kategori_id' => 'required|exists:kategoris,id', 'fitur_id' => 'required|exists:fiturs,id', - 'foto' => 'nullable|string', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', ]); + if ($request->hasFile('foto')) { + $data['foto'] = $request->file('foto')->store('templates', 'public'); + } + Template::create($data); return redirect()->route('templates.index')->with('success', 'Template berhasil ditambahkan!'); } - public function edit(Template $template) - { - $kategoris = Kategori::all(); - $fiturs = Fitur::all(); - return view('templates.edit', compact('template','kategoris','fiturs')); - } - public function update(Request $request, Template $template) { $data = $request->validate([ 'nama_template' => 'required|string|max:255', 'kategori_id' => 'required|exists:kategoris,id', 'fitur_id' => 'required|exists:fiturs,id', - 'foto' => 'nullable|string', + 'foto' => 'nullable|image|mimes:jpg,jpeg,png,gif|max:5120', ]); + if ($request->hasFile('foto')) { + if ($template->foto && Storage::disk('public')->exists($template->foto)) { + Storage::disk('public')->delete($template->foto); + } + $data['foto'] = $request->file('foto')->store('templates', 'public'); + } + $template->update($data); return redirect()->route('templates.index')->with('success', 'Template berhasil diperbarui!'); } public function destroy(Template $template) { + if ($template->foto && Storage::disk('public')->exists($template->foto)) { + Storage::disk('public')->delete($template->foto); + } + $template->delete(); return redirect()->route('templates.index')->with('success', 'Template berhasil dihapus!'); } + + public function byKategori($id) + { + $kategori = Kategori::findOrFail($id); + $templates = Template::with(['kategori','fitur']) + ->where('kategori_id', $id) + ->get(); + $kategoris = Kategori::all(); + $fiturs = Fitur::all(); + + return view('admin.templates.index', compact('templates', 'kategoris', 'fiturs', 'kategori')); + } } diff --git a/backend/database/migrations/2025_09_01_045812_create_kategoris_table.php b/backend/database/migrations/2025_09_01_045812_create_kategoris_table.php index 2b98ef2..65ad345 100644 --- a/backend/database/migrations/2025_09_01_045812_create_kategoris_table.php +++ b/backend/database/migrations/2025_09_01_045812_create_kategoris_table.php @@ -1,4 +1,4 @@ - + - -
Nomor | -Fitur | -Aksi | -
---|---|---|
{{ $key + 1 }} | -{{ $fitur->nama_fitur }} | -
-
-
-
-
- |
-
Belum ada fitur | -
Nomor | +Fitur | +Aksi | +
---|---|---|
{{ $key + 1 }} | +{{ $item->deskripsi }} + | +
+
+
+
+
+ |
+
Belum ada fitur | +