diff --git a/backend-baru/app/Http/Controllers/PelangganController.php b/backend-baru/app/Http/Controllers/PelangganController.php index e3bd58f..501d8bc 100644 --- a/backend-baru/app/Http/Controllers/PelangganController.php +++ b/backend-baru/app/Http/Controllers/PelangganController.php @@ -8,24 +8,25 @@ use Illuminate\Http\Request; class PelangganController extends Controller { + // List pesanan public function index() { $pelanggans = Pelanggan::with('template')->latest()->paginate(10); - return view('pelanggans.index', compact('pelanggans')); + return view('admin.pelanggans.index', compact('pelanggans')); } - public function create() + // Detail pesanan + public function show($id) { - $templates = Template::all(); - return view('pelanggans.create', compact('templates')); + $pelanggan = Pelanggan::with('template')->findOrFail($id); + return view('admin.pelanggans.show', compact('pelanggan')); } + // Pelanggan membuat pesanan (user side) public function store(Request $request) { - // Ambil template dulu untuk tahu struktur form $template = Template::findOrFail($request->input('template_id')); - // Generate rules dinamis dari JSON "form" di template $rules = [ 'nama_pemesan' => 'required|string|max:255', 'email' => 'required|email', @@ -33,15 +34,11 @@ class PelangganController extends Controller 'template_id' => 'required|exists:templates,id', ]; + // validasi dinamis dari field JSON form di template if ($template->form) { foreach ($template->form as $field => $options) { - // contoh: $options bisa seperti ["type"=>"text","required"=>true] $rule = []; - if (!empty($options['required'])) { - $rule[] = 'required'; - } else { - $rule[] = 'nullable'; - } + $rule[] = !empty($options['required']) ? 'required' : 'nullable'; $rule[] = 'string'; $rules["form.$field"] = implode('|', $rule); } @@ -49,8 +46,8 @@ class PelangganController extends Controller $validated = $request->validate($rules); - // fallback harga dari template kalau tidak dikirim - $harga = $request->input('harga', $template->harga); + // harga otomatis dari template + $harga = $template->harga; $pelanggan = Pelanggan::create([ 'nama_pemesan' => $validated['nama_pemesan'], @@ -59,26 +56,14 @@ class PelangganController extends Controller 'template_id' => $template->id, 'form' => $request->input('form'), 'harga' => $harga, - 'status' => 'menunggu', + 'status' => 'menunggu', // default ]); return redirect()->route('pelanggans.show', $pelanggan->id) - ->with('success', 'Pesanan berhasil dikirim. Status: menunggu.'); - } - - public function show($id) - { - $pelanggan = Pelanggan::with('template')->findOrFail($id); - return view('pelanggans.show', compact('pelanggan')); - } - - public function edit($id) - { - $pelanggan = Pelanggan::findOrFail($id); - $templates = Template::all(); - return view('pelanggans.edit', compact('pelanggan', 'templates')); + ->with('success', 'Pesanan berhasil dikirim, status menunggu konfirmasi admin.'); } + // Admin ubah status public function update(Request $request, $id) { $pelanggan = Pelanggan::findOrFail($id); @@ -89,14 +74,16 @@ class PelangganController extends Controller $pelanggan->update($validated); - return redirect()->back()->with('success', 'Status diperbarui.'); + return redirect()->back()->with('success', 'Status pesanan berhasil diperbarui.'); } + // Admin hapus pesanan public function destroy($id) { $pelanggan = Pelanggan::findOrFail($id); $pelanggan->delete(); - return redirect()->route('pelanggans.index')->with('success', 'Data dihapus.'); + return redirect()->route('pelanggans.index') + ->with('success', 'Pesanan berhasil dihapus.'); } -} \ No newline at end of file +} diff --git a/backend-baru/app/Http/Controllers/TemplateController.php b/backend-baru/app/Http/Controllers/TemplateController.php index ce5eda4..bed3838 100644 --- a/backend-baru/app/Http/Controllers/TemplateController.php +++ b/backend-baru/app/Http/Controllers/TemplateController.php @@ -7,51 +7,31 @@ use Illuminate\Http\Request; class TemplateController extends Controller { + // Lihat semua template (dari seeder) public function index() { - return response()->json(Template::with('kategori')->get()); + $templates = Template::with('kategori')->get(); + return view('admin.templates.index', compact('templates')); } - public function store(Request $request) + // Form edit (untuk ubah harga / nama dsb) + public function edit(Template $template) + { + return view('admin.templates.edit', compact('template')); + } + + // Update template (ubah harga / nama / paket) + public function update(Request $request, Template $template) { $validated = $request->validate([ 'nama_template' => 'required|string|max:255', 'harga' => 'required|numeric|min:0', - 'foto' => 'nullable|string', 'paket' => 'required|in:starter,basic,premium', - 'kategori_id' => 'required|exists:kategoris,id', - 'form' => 'required|array' // harus array JSON - ]); - - $template = Template::create($validated); - - return response()->json($template, 201); - } - - public function show(Template $template) - { - return response()->json($template->load('kategori')); - } - - public function update(Request $request, Template $template) - { - $validated = $request->validate([ - 'nama_template' => 'sometimes|required|string|max:255', - 'harga' => 'sometimes|required|numeric|min:0', - 'foto' => 'nullable|string', - 'paket' => 'sometimes|required|in:starter,basic,premium', - 'kategori_id' => 'sometimes|required|exists:kategoris,id', - 'form' => 'sometimes|required|array' ]); $template->update($validated); - return response()->json($template); - } - - public function destroy(Template $template) - { - $template->delete(); - return response()->json(null, 204); + return redirect()->route('admin.templates.index') + ->with('success', 'Template berhasil diperbarui!'); } }