ajax()) { $data = Alternatif::select('*'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::of($data) ->addIndexColumn() ->addColumn('title-post', function ($row) { $text = '
' . $row->nama_alternatif . '
'; return $text; }) ->addColumn('kode', function ($row) { return $row->id_alternatif; }) ->rawColumns(['title-post', 'kode']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; if (!empty($search)) { $query->where('nama_alternatif', 'LIKE', "%$search%"); } else { $query->get(); } } }) ->make(true); } $data = [ 'subtitle' => 'Nasabah', 'button' => true, 'module' => [ 'url' => route('nasabah.create'), 'name' => 'Tambah Baru' ] ]; return view('user::nasabah.index', compact('data')); } public function create() { $kodeNasabah = $this->generateKodeNasabah(); $data = [ 'subtitle' => 'Tambah baru', 'kodeNasabah' => $kodeNasabah ]; return view('user::nasabah.add', compact('data')); } // Metode untuk menghasilkan kode nasabah private function generateKodeNasabah() { $lastNasabah = Alternatif::orderBy('id_alternatif', 'desc')->first(); $lastNumber = $lastNasabah ? (int)substr($lastNasabah->id_alternatif, 3) : 0; $newNumber = $lastNumber + 1; return 'NSB' . str_pad($newNumber, 3, '0', STR_PAD_LEFT); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $validator = Validator::make($request->all(), [ // 'id_alternatif' => 'required', 'nama_alternatif' => 'required', ]); if ($validator->fails()) { return redirect()->back()->withInput()->with('error', 'Unexpected error, please try again. code: ' . $validator->errors()->first()); } // $input = $request->all(); // $post = new Alternatif([ // 'id_alternatif' => $input['id_alternatif'], // Membersihkan input judul menggunakan Purifier // 'nama_alternatif' => $input['nama_alternatif'], // Membersihkan input deskripsi menggunakan Purifier // 'uplink' => user()->id $kodeNasabah = $this->generateKodeNasabah(); $post = new Alternatif([ 'id_alternatif' => $kodeNasabah, 'nama_alternatif' => $request->input('nama_alternatif'), 'uplink' => user()->id ]); // $check = Alternatif::where('id_alternatif', $input['id_alternatif'])->count(); // if ($check == 0) { // if ($post->save()) { // return redirect()->route('nasabah')->with('success', 'You have successfully added data'); // } else { // return redirect()->route('nasabah')->with('error', 'An error occurred in the query'); // } // } else { // return redirect()->route('nasabah')->with('error', 'Title already exists'); // } $check = Alternatif::where('id_alternatif', $kodeNasabah)->count(); if ($check == 0) { if ($post->save()) { return redirect()->route('nasabah')->with('success', 'You have successfully added data'); } else { return redirect()->route('nasabah')->with('error', 'An error occurred in the query'); } } else { return redirect()->route('nasabah')->with('error', 'Title already exists'); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $data = [ 'subtitle' => 'Edit: ' . Alternatif::where('id_alternatif', $id)->first()->title, ]; $alternatif = Alternatif::FindOrFail($id); return view('user::nasabah.edit', compact('data', 'alternatif', 'id')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // Validasi input sebelum memperbarui data $validator = Validator::make($request->all(), [ 'id_alternatif' => 'required', 'nama_alternatif' => 'required', ]); if ($validator->fails()) { return redirect()->back()->withInput()->with('error', 'Unexpected error, please try again. code: ' . $validator->errors()->first()); } // Cari data berdasarkan ID $alternatif = Alternatif::find($id); // Jika data ditemukan if ($alternatif) { // Update data dengan data baru dari form yang telah dibersihkan $alternatif->id_alternatif = $request->input('id_alternatif'); $alternatif->nama_alternatif = $request->input('nama_alternatif'); // Simpan perubahan pada database $alternatif->save(); return redirect()->route('nasabah')->with('success', 'You are successfully added new records'); } else { return redirect()->route('nasabah')->with('error', 'Unexpected error'); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // Cari data berdasarkan ID $post = Alternatif::find($id); // Jika data ditemukan if ($post) { // Hapus data dari database $post->delete(); return redirect()->route('nasabah')->with('success', 'You are successfully deleted records'); } else { return redirect()->route('nasabah')->with('error', 'Data not found'); } } }