/ app / Http / Controllers / Filter / UserController.php
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  }