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 }