Edit File: UserController.php
<?php namespace App\Http\Controllers\Dashboard; use App\Exports\UsersExport; use App\Http\Controllers\Controller; use App\Http\Requests\StoreUserRequest; use App\Http\Requests\UpdateUserRequest; use App\Models\Role; use App\Models\User; use App\Traits\ApiTrait; use App\Traits\PermissionTrait; use App\Traits\Uploadable; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; use Illuminate\Validation\Rule; use Maatwebsite\Excel\Facades\Excel; class UserController extends Controller { use Uploadable, ApiTrait, PermissionTrait; public function index() { $users = User::all(); return view('admin.users.index', compact('users')); } public function create() { $roles = Role::all(); return view('admin.users.create', compact('roles')); } public function store(StoreUserRequest $request) { $data = $request->validated(); $filteredPhone = User::cleanPhone($data['phone']); $data['phone'] = $request['phone'] = $filteredPhone['phone']; $data['country_key'] = $filteredPhone['country_key']; $data['password'] = Hash::make($data['password']); // To Validate Phone after filter phone $request->validate([ 'phone' => ['unique:users,phone'] ]); if ($request->has('avatar')) { $data['avatar'] = $this->uploadOne($request->avatar, 'users', true, 250, null); } $user = User::create($data); if ($request->status == 'pending') { // Send Verification code User::sendVerificationCode($user); } auth()->user()->saveReport('اضافة عضو'); return redirect()->route('admin.users.index')->with('success', trans('dashboard.created_successfully')); } public function show(User $user) { if (!$user->role) return back()->with('error', __('dashboard.alerts.something went_wrong_please_try_again')); $user->role->load('permissions'); $superPermissions = $this->getAll(); $roleUserPermissions = $user->role->permissions->pluck('name')->toArray(); return view('admin.users.show', compact('user', 'superPermissions', 'roleUserPermissions')); } public function edit(User $user) { $roles = Role::all(); return view('admin.users.edit', compact('user', 'roles')); } public function update(UpdateUserRequest $request, User $user) { $data = $request->validated(); $filteredPhone = User::cleanPhone($data['phone']); $data['phone'] = $filteredPhone['phone']; $data['country_key'] = $filteredPhone['country_key']; // To Validate after filter phone $request->validate([ 'phone' => ['required', Rule::unique('users')->ignore($user->id, 'id')], ]); if ($request->has('avatar')) { if ($user->avatar != 'default.png') File::delete(public_path('assets/uploads/users/' . $user->avatar)); $data['avatar'] = $this->uploadOne($request->avatar, 'users', true, 250, null); } $user->update($data); auth()->user()->saveReport('تعديل عضو'); return redirect()->route('admin.users.index')->with('success', __('dashboard.Updated successfully!')); } public function destroy(User $user) { $data = ['userId' => $user->id,]; if ($user->avatar != 'default.png') File::delete(public_path('assets/uploads/users/' . $user->avatar)); $user->delete(); auth()->user()->saveReport('حذف عضو'); return self::successReturn('', $data); } public function destroySelected(Request $request) { $ids = $request->users; $users = User::find($ids); foreach ($users as $user) { if ($user->avatar != 'default.png') File::delete(public_path('assets/uploads/users/' . $user->avatar)); } User::destroy($users); auth()->user()->saveReport('حذف اعضاء'); return self::successReturn('', $ids); } public function downloadAllUsers() { auth()->user()->saveReport('تنزيل الاعضاء كملف Excel'); return Excel::download(new UsersExport('users'), 'all-users.xlsx'); } public function blocked() { $users = User::where('status', 'block')->get(); return view('admin.users.blocked', compact('users')); } public function block(User $user) { $user->update(['status' => 'block']); auth()->user()->saveReport('حظر عضو'); return $this->successReturn(__('dashboard.alerts.blocked_successfully')); } public function unBlock(User $user) { $user->update(['status' => 'active']); auth()->user()->saveReport('فك حظر عضو'); return $this->successReturn(__('dashboard.alerts.un_blocked_successfully')); } public function activeUsers() { $users = User::where('active', 'true')->get(); return view('admin.users.active', compact('users')); } public function inActiveUsers() { $users = User::where('active', 'false')->get(); return view('admin.users.inactive', compact('users')); } public function maleUsers() { $users = User::where('gender', 'male')->get(); return view('admin.users.male', compact('users')); } public function femaleUsers() { $users = User::where('gender', 'female')->get(); return view('admin.users.female', compact('users')); } }
Back to File Manager