ajax()) { $data = User::select('*')->where('level', GlobalEnum::isWaliMurid)->orderBy('created_at', 'desc'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return Datatables::eloquent($data) ->addIndexColumn() ->addColumn('title-post', function($row) { return '
' . $row->name . '
'; }) ->addColumn('siswa', function($row) { $siswa_id = $row->wali->first()->siswa_id; return User::where('id', $siswa_id)->first()->name; }) ->addColumn('action', function($row){ $view = route('users.show', ['id' => $row->id]); $edit = route('users.edit', ['id' => $row->id]); $delete = route('users.delete', ['id' => $row->id]); $btn = ' '; return $btn; }) ->addColumn('status', function($row){ if ($row->status == GlobalEnum::isActive) { return 'Active'; } elseif($row->status == GlobalEnum::isInactive) { return 'Non Active'; } elseif($row->status == GlobalEnum::isDeactive) { return 'Deactivated'; } else { return 'Not Verified'; } }) ->rawColumns(['title-post','siswa','action','status']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; $filterCategory = explode('|', $search); if($filterCategory[0] === 'status') { if(!empty($filterCategory[1])) { $query->where('is_status', '=', $filterCategory[1]); } else { $query->get(); } } elseif($filterCategory[0] === 'user') { if(!empty($filterCategory[1])) { $query->where('name', 'LIKE', "%$filterCategory[1]%"); } else { $query->get(); } } } }) ->make(true); } $data = [ 'subtitle' => 'Wali Murid', 'button' => true, 'module' => [ 'url' => route('konselor.wali.create'), 'name' => 'Create New' ] ]; return view('konselor::wali.index', compact('data')); } public function create() { $data = [ 'subtitle' => 'Tambah baru', ]; $getListSiswa = User::where('level', GlobalEnum::isSiswa)->get(); return view('konselor::wali.add', compact('data', 'getListSiswa')); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'password' => 'required', 'status' => 'required', 'siswa_id' => 'required' ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $post = new User([ 'name' => $input['name'], 'username' => Str::before($input['email'], '@') . rand(100, 999), 'email' => $input['email'], 'password' => bcrypt($input['password']), 'status' => $input['status'], 'level' => GlobalEnum::isWaliMurid, 'thumbnail' => empty($foto_namaBaru) ? '' : $foto_namaBaru, ]); $check = User::where('email', $input['email'])->count(); if ($check == 0) { if ($post->save()) { $detail = User::where('email', $input['email'])->first(); $postDetail = new Wali([ 'id' => Str::uuid(), 'user_id' => $detail->id, 'siswa_id' => $input['siswa_id'] ]); $postDetail->save(); return redirect()->route('konselor.wali')->with('swal', swal_alert('success', 'You have successfully added data')); } else { return redirect()->route('konselor.wali')->with('swal', swal_alert('error', 'An error occurred in the query')); } } else { return redirect()->route('konselor.wali')->with('swal', swal_alert('error', 'Email already exists')); } } public function edit($id) { $data = [ 'subtitle' => User::where('id', $id)->first()->name, 'records' => User::where('id', $id)->first() ]; $getListSiswa = User::where('level', GlobalEnum::isSiswa)->get(); $detailSiswa = Wali::where('user_id', $id)->first(); return view('konselor::wali.edit', compact('data', 'id', 'getListSiswa', 'detailSiswa')); } public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'status' => 'required', 'siswa_id' => 'required' ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $input = $request->all(); $user = User::find($id); $detail = Wali::where('user_id', $id)->first(); $user->name = $input['name']; $user->email = $input['email']; !empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password; $user->status = $request->input('status'); $user->username = Str::before($user->email, '@') . rand(100, 999); $detail->siswa_id = $input['siswa_id']; // save if ($user->save() && $detail->save()) { return redirect()->route('konselor.wali')->with('swal', swal_alert('success', 'You have successfully updated data')); } else { return redirect()->route('konselor.wali')->with('swal', swal_alert('error', 'An error occurred in the query')); } } public function delete($id) { $detail = Wali::where('user_id', $id)->first(); $user = User::find($id); if ($user->delete() && $detail->delete()) { return redirect()->route('konselor.wali')->with('swal', swal_alert('success', 'You have successfully deleted data')); } else { return redirect()->route('konselor.wali')->with('swal', swal_alert('error', 'An error occurred in the query')); } } }