UserController.php
1 <?php 2 3 namespace App\Http\Controllers\Filter; 4 5 use App\Enums\UserTypeEnum; 6 use App\Http\Controllers\Controller; 7 use App\Models\User; 8 use Illuminate\Contracts\Database\Eloquent\Builder; 9 use Illuminate\Http\Request; 10 11 class UserController extends Controller 12 { 13 public function internals(Request $request) 14 { 15 return $this->baseQuery($request) 16 ->where('user_type_id', UserTypeEnum::INTERNAL->value) 17 ->get(); 18 } 19 20 public function externals(Request $request) 21 { 22 return $this->baseQuery($request) 23 ->where('user_type_id', UserTypeEnum::EXTERNAL->value) 24 ->get(); 25 } 26 27 public function all(Request $request) 28 { 29 return $this->baseQuery($request) 30 ->get(); 31 } 32 33 protected function baseQuery(Request $request) 34 { 35 return User::query() 36 ->selectRaw('id, CONCAT(name, " ", IFNULL(lastname, "")) as name, alias, user_type_id') 37 ->orderBy('name') 38 ->when( 39 $request->search, 40 fn(Builder $query) => $query 41 ->where('name', 'like', "%{$request->search}%") 42 ) 43 ->when( 44 $request->exists('selected'), 45 fn(Builder $query) => $query->whereIn('id', $request->input('selected', [])), 46 fn(Builder $query) => $query->limit(10) 47 ); 48 } 49 }