when($request->filled('search'), function (Builder $query) use ($request) { $search = $request->input('search'); $query->whereAny([ 'first_name', 'last_name', 'username', 'id', 'status', 'email', 'created_at' ], 'LIKE', "%$search%"); }) ->when($request->filled('sort'), function (Builder $query) use ($request) { switch ($request->input('sort')) { case 'newest': $query->orderByDesc('created_at'); break; case 'email': $query->orderBy('email'); break; case 'name_desc': $query ->orderByDesc('first_name') ->orderByDesc('last_name'); break; default: $query ->orderBy('first_name') ->orderBy('last_name'); break; } }) ->paginate(); return view('admin.admins.index', compact('admins')); } public function create() { return view('admin.admins.create'); } public function store(AdminStoreRequest $request) { $inputs = $request->validated(); try { DB::beginTransaction(); $inputs['password'] = Hash::make($inputs['password']); $admin = Admin::create($inputs); $admin->permission()->create([ 'admin_view' => $request->boolean('admin_view'), 'admin_create' => $request->boolean('admin_create'), 'admin_edit' => $request->boolean('admin_edit'), 'admin_delete' => $request->boolean('admin_delete'), ]); DB::commit(); } catch (\Exception $exception) { DB::rollBack(); Log::error($exception); return back() ->withErrors([ 'general' => 'خطایی رخ داده است' ]) ->withInput(); } return redirect() ->route('admin.admins.index') ->with('success', 'مدیر با موفقیت ایجاد شد.'); } public function edit(Admin $admin) { $adminPermission = $admin->permission; return view('admin.admins.edit', compact( 'admin', 'adminPermission' )); } public function update(AdminUpdateRequest $request, Admin $admin) { $inputs = $request->validated(); try { DB::beginTransaction(); if (!empty($inputs['password'])) { $inputs['password'] = Hash::make($inputs['password']); } else { unset($inputs['password']); } $admin->update($inputs); $admin->permission()->updateOrCreate( [ 'admin_id' => $admin->id, ], [ 'admin_view' => $request->boolean('admin_view'), 'admin_create' => $request->boolean('admin_create'), 'admin_edit' => $request->boolean('admin_edit'), 'admin_delete' => $request->boolean('admin_delete'), ] ); DB::commit(); } catch (\Exception $exception) { DB::rollBack(); Log::error($exception); return back() ->withErrors([ 'general' => 'خطایی رخ داده است' ]) ->withInput(); } return redirect() ->route('admin.admins.index') ->with('success', 'عملیات با موفقیت انجام شد.'); } public function destroy(Admin $admin) { try { DB::beginTransaction(); $admin->permission()->delete(); $admin->delete(); DB::commit(); } catch (\Exception $exception) { DB::rollBack(); Log::error($exception); return back() ->withErrors([ 'general' => 'خطایی در حذف مدیر رخ داده است.' ]); } return redirect() ->route('admin.admins.index') ->with('success', 'مدیر با موفقیت حذف شد.'); } }