with(['province', 'city', 'file']) ->when($request->filled('search'), function (Builder $query) use ($request){ $search = $request->input('search'); $query->whereAny([ 'first_name', 'last_name', 'mobile', 'email' ],'LIKE',"%$search%"); }) ->when($request->filled('sort'), function (Builder $query) use ($request) { $sort = $request->input('sort'); switch ($sort){ case 'name_asc' : { $query ->orderBy('first_name') ->orderBy('last_name'); break; } case 'name_desc' : { $query ->orderByDesc('first_name') ->orderByDesc('last_name'); break; } default: { $query->orderByDesc('created_at'); } } }) ->paginate(); return view('admin.users.index',compact('users')); } public function edit(User $user) { $user->load(['province', 'city', 'file']); $provinces = Province::all(); return view('admin.users.edit', compact('user', 'provinces')); } public function update(User $user, UserEditRequest $request) { $inputs = $request->only([ 'first_name', 'last_name', 'mobile', 'email', 'province_id', 'city_id', ]); if ($request->filled('password')){ $inputs['password'] = Hash::make($request->input('password')); } $user->update($inputs); return redirect()->route('admin.users.index'); } public function destroy(User $user) { if ($user->bookings()->exists()) { return back()->withErrors([ 'error' => 'این کاربر دارای رزرو است و قابل حذف نیست.' ]); } $user->delete(); return redirect()->route('admin.users.index')->withErrors([ 'success'=> 'کاربر با موفقیت حذف شد' ]); } }