input('term')) return $result; $account_ids = ($x=Auth::user()->accounts)->pluck('id'); $user_ids = $x->transform(function($item) { return $item->user;})->pluck('id'); # Look for User foreach (User::Search($request->input('term')) ->whereIN('id',$user_ids) ->orderBy('lastname') ->orderBy('firstname') ->limit(10)->get() as $o) { $result->push(['name'=>sprintf('%s (%s)',$o->name,$o->lid),'value'=>'/u/home/'.$o->id,'category'=>'Users']); } # Look for Account foreach (Account::Search($request->input('term')) ->whereIN('user_id',$user_ids) ->orderBy('company') ->limit(10)->get() as $o) { $result->push(['name'=>sprintf('%s (%s)',$o->company,$o->lid),'value'=>'/u/home/'.$o->user_id,'category'=>'Accounts']); } # Look for a Service foreach (Service::Search($request->input('term')) ->whereIN('account_id',$account_ids) ->orderBy('id') ->limit(20)->get() as $o) { $result->push(['name'=>sprintf('%s (%s) %s',$o->name,$o->lid,$o->active ? '' : 'INACT'),'value'=>'/u/service/'.$o->id,'category'=>$o->category_name]); } # Look for an Invoice foreach (Invoice::Search($request->input('term')) ->whereIN('account_id',$account_ids) ->orderBy('id') ->limit(10)->get() as $o) { $result->push(['name'=>sprintf('%s: %s',$o->lid,$o->account->name),'value'=>'/u/invoice/'.$o->id,'category'=>'Invoices']); } if (Gate::any(['wholesaler'],new Payment)) { # Look for Payments foreach (Payment::Search($request->input('term')) ->whereIN('account_id',$account_ids) ->limit(10)->get() as $o) { $result->push(['name'=>sprintf('%s: %s $%s',$o->lid,$o->account->name,number_format($o->total,2)),'value'=>'/a/payment/addedit/'.$o->id,'category'=>'Payments']); } } return $result->sortBy(function($item) { return $item['category'].$item['name']; })->values(); } }