/ app / Http / Controllers / Filter / EntityController.php
EntityController.php
 1  <?php
 2  
 3  namespace App\Http\Controllers\Filter;
 4  
 5  use App\Http\Controllers\Controller;
 6  use App\Models\Entity;
 7  use Illuminate\Contracts\Database\Eloquent\Builder;
 8  use Illuminate\Http\Request;
 9  
10  class EntityController extends Controller
11  {
12      public function laboratories(Request $request)
13      {
14          return Entity::query()
15              ->select('id', 'name')
16              ->where('entity_type_id', 1)
17              ->orderBy('name')
18              ->when(
19                  $request->search,
20                  fn (Builder $query) => $query
21                      ->where('name', 'like', "%{$request->search}%")
22                      ->orWhere('legal_name', 'like', "%{$request->search}%")
23              )
24              ->when(
25                  $request->exists('selected'),
26                  fn (Builder $query) => $query->whereIn('id', $request->input('selected', [])),
27                  fn (Builder $query) => $query->limit(10)
28              )
29              ->get();
30      }
31  
32      public function companies(Request $request)
33      {
34          return Entity::query()
35              ->select('id', 'name')
36              ->where('entity_type_id', 3)
37              ->orderBy('name')
38              ->when(
39                  $request->search,
40                  fn (Builder $query) => $query
41                      ->where('name', 'like', "%{$request->search}%")
42                      ->orWhere('legal_name', 'like', "%{$request->search}%")
43              )
44              ->when(
45                  $request->exists('selected'),
46                  fn (Builder $query) => $query->whereIn('id', $request->input('selected', [])),
47                  fn (Builder $query) => $query->limit(10)
48              )
49              ->get();
50      }
51  
52      public function pocs(Request $request)
53      {
54          $entity = Entity::find($request->entityId);
55          if (!$entity) {
56              return [];
57          }
58  
59          return Entity::find($request->entityId)->pointsOfContact()->map(fn ($poc) => [
60              'id' => $poc->id,
61              'name' => $poc->name,
62          ]);
63      }
64  }