[Update controller]
This commit is contained in:
parent
e1d2a130f7
commit
64d5c96518
@ -8,24 +8,25 @@ use Illuminate\Http\Request;
|
|||||||
|
|
||||||
class PelangganController extends Controller
|
class PelangganController extends Controller
|
||||||
{
|
{
|
||||||
|
// List pesanan
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$pelanggans = Pelanggan::with('template')->latest()->paginate(10);
|
$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();
|
$pelanggan = Pelanggan::with('template')->findOrFail($id);
|
||||||
return view('pelanggans.create', compact('templates'));
|
return view('admin.pelanggans.show', compact('pelanggan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pelanggan membuat pesanan (user side)
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
// Ambil template dulu untuk tahu struktur form
|
|
||||||
$template = Template::findOrFail($request->input('template_id'));
|
$template = Template::findOrFail($request->input('template_id'));
|
||||||
|
|
||||||
// Generate rules dinamis dari JSON "form" di template
|
|
||||||
$rules = [
|
$rules = [
|
||||||
'nama_pemesan' => 'required|string|max:255',
|
'nama_pemesan' => 'required|string|max:255',
|
||||||
'email' => 'required|email',
|
'email' => 'required|email',
|
||||||
@ -33,15 +34,11 @@ class PelangganController extends Controller
|
|||||||
'template_id' => 'required|exists:templates,id',
|
'template_id' => 'required|exists:templates,id',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// validasi dinamis dari field JSON form di template
|
||||||
if ($template->form) {
|
if ($template->form) {
|
||||||
foreach ($template->form as $field => $options) {
|
foreach ($template->form as $field => $options) {
|
||||||
// contoh: $options bisa seperti ["type"=>"text","required"=>true]
|
|
||||||
$rule = [];
|
$rule = [];
|
||||||
if (!empty($options['required'])) {
|
$rule[] = !empty($options['required']) ? 'required' : 'nullable';
|
||||||
$rule[] = 'required';
|
|
||||||
} else {
|
|
||||||
$rule[] = 'nullable';
|
|
||||||
}
|
|
||||||
$rule[] = 'string';
|
$rule[] = 'string';
|
||||||
$rules["form.$field"] = implode('|', $rule);
|
$rules["form.$field"] = implode('|', $rule);
|
||||||
}
|
}
|
||||||
@ -49,8 +46,8 @@ class PelangganController extends Controller
|
|||||||
|
|
||||||
$validated = $request->validate($rules);
|
$validated = $request->validate($rules);
|
||||||
|
|
||||||
// fallback harga dari template kalau tidak dikirim
|
// harga otomatis dari template
|
||||||
$harga = $request->input('harga', $template->harga);
|
$harga = $template->harga;
|
||||||
|
|
||||||
$pelanggan = Pelanggan::create([
|
$pelanggan = Pelanggan::create([
|
||||||
'nama_pemesan' => $validated['nama_pemesan'],
|
'nama_pemesan' => $validated['nama_pemesan'],
|
||||||
@ -59,26 +56,14 @@ class PelangganController extends Controller
|
|||||||
'template_id' => $template->id,
|
'template_id' => $template->id,
|
||||||
'form' => $request->input('form'),
|
'form' => $request->input('form'),
|
||||||
'harga' => $harga,
|
'harga' => $harga,
|
||||||
'status' => 'menunggu',
|
'status' => 'menunggu', // default
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->route('pelanggans.show', $pelanggan->id)
|
return redirect()->route('pelanggans.show', $pelanggan->id)
|
||||||
->with('success', 'Pesanan berhasil dikirim. Status: menunggu.');
|
->with('success', 'Pesanan berhasil dikirim, status menunggu konfirmasi admin.');
|
||||||
}
|
|
||||||
|
|
||||||
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'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Admin ubah status
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
$pelanggan = Pelanggan::findOrFail($id);
|
$pelanggan = Pelanggan::findOrFail($id);
|
||||||
@ -89,14 +74,16 @@ class PelangganController extends Controller
|
|||||||
|
|
||||||
$pelanggan->update($validated);
|
$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)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
$pelanggan = Pelanggan::findOrFail($id);
|
$pelanggan = Pelanggan::findOrFail($id);
|
||||||
$pelanggan->delete();
|
$pelanggan->delete();
|
||||||
|
|
||||||
return redirect()->route('pelanggans.index')->with('success', 'Data dihapus.');
|
return redirect()->route('pelanggans.index')
|
||||||
|
->with('success', 'Pesanan berhasil dihapus.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,51 +7,31 @@ use Illuminate\Http\Request;
|
|||||||
|
|
||||||
class TemplateController extends Controller
|
class TemplateController extends Controller
|
||||||
{
|
{
|
||||||
|
// Lihat semua template (dari seeder)
|
||||||
public function index()
|
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([
|
$validated = $request->validate([
|
||||||
'nama_template' => 'required|string|max:255',
|
'nama_template' => 'required|string|max:255',
|
||||||
'harga' => 'required|numeric|min:0',
|
'harga' => 'required|numeric|min:0',
|
||||||
'foto' => 'nullable|string',
|
|
||||||
'paket' => 'required|in:starter,basic,premium',
|
'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);
|
$template->update($validated);
|
||||||
|
|
||||||
return response()->json($template);
|
return redirect()->route('admin.templates.index')
|
||||||
}
|
->with('success', 'Template berhasil diperbarui!');
|
||||||
|
|
||||||
public function destroy(Template $template)
|
|
||||||
{
|
|
||||||
$template->delete();
|
|
||||||
return response()->json(null, 204);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user