File: /home/imensosw/www/mpl.imenso.co/app/Typeahead/MemberTypeahead.php
<?php
namespace App\Typeahead;
use App\Models\User;
use Auth;
use DB;
use Illuminate\Support\Collection;
class MemberTypeahead extends TypeaheadBuilder
{
public function get($total = 10)
{
$query = User::where('type_id', 3)
->where(
DB::raw("CONCAT(`first_name`, ' ', `last_name`)"),
'LIKE',
'%'.$this->search_string.'%'
);
if ($this->exclude) {
$query = $query->whereNotIn('id', $this->exclude);
}
$user = Auth::user();
if ($this->connected_only == true) {
if ($user->isVenue()) {
$user_member_connections = DB::table('fan_venue_connections')->where('venue_id', $user->id)->pluck('fan_id');
} elseif ($user->isBand()) {
$user_member_connections = DB::table('fan_artist_connections')->where('artist_id', $user->id)->pluck('fan_id');
} elseif ($user->isFan()) {
$preliminary_user_member_connections = DB::table('fan_fan_connections')->select('fan_id1', 'fan_id2')->where('fan_id1', $user->id)->orWhere('fan_id2', $user->id)->get();
$user_member_connections = [];
foreach ($preliminary_user_member_connections as $key => $connection) {
if ($connection->fan_id1 == $user->id) {
$user_member_connections[] = $connection->fan_id2;
} elseif ($connection->fan_id2 == $user->id) {
$user_member_connections[] = $connection->fan_id1;
}
}
} elseif ($user->isPromoter()) {
$user_member_connections = DB::table('fan_promoter_connections')->where('promoter_id', $user->id)->pluck('fan_id');
} else {
$user_member_connections = [];
}
$query = $query->whereIn('id', $user_member_connections);
}
$users = $query->take($total)
->get();
$this->data = new Collection;
foreach ($users as $user) {
$this->data->put($user->id, $user->first_name.' '.$user->last_name);
}
return $this->output();
}
}