diff --git a/app/Http/Controllers/Admin/AdditionalController.php b/app/Http/Controllers/Admin/AdditionalController.php index 5313555..393863e 100644 --- a/app/Http/Controllers/Admin/AdditionalController.php +++ b/app/Http/Controllers/Admin/AdditionalController.php @@ -3,68 +3,24 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; use App\Models\Additional; -use Illuminate\Support\Facades\Validator; +use App\Http\Requests\Admin\AdditionalRequest; // Gunakan FormRequest baru class AdditionalController extends Controller { - // Store: Simpan Data Baru - public function store(Request $request) + public function store(AdditionalRequest $request) { - $validator = Validator::make($request->all(), [ - 'nama' => 'required|string|min:3|max:100', - 'harga' => 'required|numeric|min:0', - ], [ - 'required' => 'Kolom :attribute wajib diisi.', - 'numeric' => ':attribute harus berupa angka.', - 'string' => 'Input :attribute harus berupa teks valid.', - 'max' => ':attribute melebihi batas, maksimal :max karakter/KB.', - 'min' => ':attribute minimal harus :min karakter/nilai.', - 'numeric' => ':attribute harus berupa angka.', - ], [ - 'nama' => 'nama additional', - 'harga' => 'harga additional', - ]); - if ($validator->fails()) { - return redirect()->back() - ->withErrors($validator) - ->withInput() - ->with('error_modal', 'createAdd'); - } - Additional::create($request->only(['nama', 'harga'])); + Additional::create($request->validated()); return redirect()->back()->with('success', 'Additional berhasil ditambahkan!'); } - // Update: Simpan Perubahan - public function update(Request $request, string $id) + public function update(AdditionalRequest $request, string $id) { $additional = Additional::findOrFail($id); - $validator = Validator::make($request->all(), [ - 'nama' => 'required|string|min:3|max:100', - 'harga' => 'required|numeric|min:0', - ], [ - 'required' => 'Kolom :attribute wajib diisi.', - 'numeric' => ':attribute harus berupa angka.', - 'string' => 'Input :attribute harus berupa teks valid.', - 'max' => ':attribute melebihi batas, maksimal :max karakter/KB.', - 'min' => ':attribute minimal harus :min karakter/nilai.', - 'numeric' => ':attribute harus berupa angka.', - ], [ - 'nama' => 'nama additional', - 'harga' => 'harga additional', - ]); - if ($validator->fails()) { - return redirect()->back() - ->withErrors($validator) - ->withInput() - ->with('error_id_add', $id); - } - $additional->update($request->only(['nama', 'harga'])); + $additional->update($request->validated()); return redirect()->back()->with('success', 'Additional berhasil diperbarui!'); } - // Destroy: Hapus Data public function destroy(string $id) { $additional = Additional::findOrFail($id); diff --git a/app/Http/Requests/Admin/AdditionalRequest.php b/app/Http/Requests/Admin/AdditionalRequest.php new file mode 100644 index 0000000..e0ec682 --- /dev/null +++ b/app/Http/Requests/Admin/AdditionalRequest.php @@ -0,0 +1,60 @@ + 'required|string|min:3|max:100', + 'harga' => 'required|numeric|min:0', + ]; + } + + public function messages(): array + { + return [ + 'required' => 'Kolom :attribute wajib diisi.', + 'numeric' => ':attribute harus berupa angka.', + 'string' => 'Input :attribute harus berupa teks valid.', + 'min' => ':attribute minimal harus :min karakter/nilai.', + 'max' => ':attribute melebihi batas maksimal :max karakter.', + ]; + } + + public function attributes(): array + { + return [ + 'nama' => 'nama additional', + 'harga' => 'harga additional', + ]; + } + + /** + * Mengatur respon jika validasi gagal agar modal tidak tertutup. + */ + protected function failedValidation(Validator $validator) + { + $redirect = redirect()->back()->withErrors($validator)->withInput(); + + if ($this->isMethod('post')) { + // Untuk modal tambah additional + $redirect->with('error_modal', 'createAdd'); + } else { + // Untuk modal edit berdasarkan ID additional + $redirect->with('error_id_add', $this->route('additional')); + } + + throw new HttpResponseException($redirect); + } +}