search) , function ($query) use ($request){ $query->where(function ($q) use ($request) { $q->where('username', 'LIKE', "%{$request->search}%") ->orWhere('phone', 'LIKE', "%{$request->search}%") ->orWhere('fullname', 'LIKE', "%{$request->search}%") ->orWhere('email','LIKE', "%{$request->search}%"); }); }) ->when(isset($request->level) && $request->level != 'همه سطح ها', function ($query) use ($request) { $query->where('level' , $request->level); }) ->latest() ->paginate(20) ->withQueryString() ->onEachSide(1); $users = UserResource::collection($lists); return Inertia::admin('Users/index', [ 'users' => $users, 'search' => $request->search, 'level' => $request->level, ]); } public function bulkDelete(Request $request) { User::destroy($request->ids); session()->flash('success', 'کاربر های مورد نظر با موفقیت حذف شدند.'); return response(null , 200); } public function exportData(Request $request) { $filters = $request->only(['level', 'search']); return Excel::download(new UsersExport($filters), 'users.xlsx'); } public function create() { $roles = Role::latest()->get(); return Inertia::admin('Users/create_and_edit', [ 'roles' => $roles, ]); } public function store(UserRequest $request) { $user = User::create([ 'username' => $request->username, 'email' => $request->email, 'phone' => $request->phone, 'fullname' => $request->fullname, 'password' => Hash::make($request->password), 'level' => $request->level, 'national_code' => $request->national_code, 'profile_url' => $request->image ? $request->image['url'] : '', 'created_at' => Carbon::parse($request->datetime), 'updated_at' => Carbon::parse($request->datetime), ]); if ($request->role){ $user->assignRole($request->role); } session()->flash('success', 'کاربر جدید با موفقیت ایجاد شد.'); return response(null , 200); } public function show(User $user) { // } public function edit(User $user) { $roles = Role::latest()->get(); return Inertia::admin('Users/create_and_edit', [ 'user' => [ 'id' => $user->id, 'username' => $user->username, 'phone' => $user->phone, 'fullname' => $user->fullname, 'email' => $user->email, 'level' => $user->level, 'role' => $user->roles()->pluck('id')->toArray(), 'profile_url' => $user->profile_url, 'created_at' => optional($user->created_at)->format('Y-m-d H:i:s'), ], 'roles' => $roles, 'is_edit' => true, ]); } public function update(UserRequest $request, User $user) { $user->update([ 'username' => $request->username, 'email' => $request->email, 'phone' => $request->phone, 'fullname' => $request->fullname, 'password' => $request->password ? Hash::make($request->password) : $user->password, 'profile_url' => $request->image ? $request->image['url'] : '', 'level' => $request->level, 'national_code' => $request->national_code, 'created_at' => Carbon::parse($request->datetime), 'updated_at' => Carbon::parse($request->datetime), ]); if ($request->role) { $user->syncRoles($request->role); } else { $user->syncRoles([]); } session()->flash('success', 'کاربر با موفقیت بروزرسانی شد.'); return response(null , 200); } public function destroy(User $user) { $user->delete(); session()->flash('success', 'کاربر مورد نظر با موفقیت حذف شد.'); return response(null , 200); } public function getDoctorsOptions(Request $request) { $lists = User::where('level', UserEnum::Doctor->value) ->when(isset($request->search) && !empty($request->search), function ($query) use ($request) { $query->where(function ($q) use ($request) { $q->where('fullname', 'LIKE', "%{$request->search}%") ->orWhere('username', 'LIKE', "%{$request->search}%") ->orWhere('email', 'LIKE', "%{$request->search}%"); }); }) ->latest() ->take(20) ->get(['id', 'fullname', 'username', 'email']); $options = $lists->map(function ($user) { return [ 'label' => $user->fullname, 'value' => $user->id ]; }); return response()->json([ 'success' => true, 'data' => $options ]); } }