status = $status; $this->count = $count; $this->mode = $mode; } public function getDeals() { $deals = false; $user = auth()->user(); $clients = false; if ($admin = CompanyAdmin::where('user_id', $user->id)->first()) { /*$deals = Deal::whereIn('agent_id', function ($query) use ($admin) { $query->select('id'); $query->from('agents'); $query->where('company_id', $admin->company_id); });*/ $agentsOfCompany = Agent::where('company_id', $admin->company_id)->get()->pluck('id'); $clients = Client::whereIn('id', function ($query) use ($agentsOfCompany) { $query->select('client_id') ->from('deals') ->whereIn('agent_id', $agentsOfCompany); }); } elseif ($agent = Agent::where('user_id', $user->id)->first()) { //$deals = Deal::where('agent_id', $agent->id); $clients = Client::whereIn('id', function ($query) use ($agent) { $query->select('client_id') ->from('deals') ->where('agent_id', $agent->id); }); } $clients = $clients->orderBy('name'); return $clients; } public function render() { $clients = $this->getDeals(); if ($this->status && $this->status == DealStatus::UNIQUE) { /*$deals = $deals ->whereIn('status', [DealStatus::UNIQUE]) ->orderBy('id', 'desc')->paginate($this->count, ['*'], 'unique_clients');*/ $clients = $clients->whereHas('deals', function ($query) { $query->where('status', DealStatus::UNIQUE); })->paginate($this->count, ['*'], 'unique_clients'); } elseif ($this->status && $this->status == DealStatus::NOT_UNIQUE) { /*$deals = $deals ->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]) ->orderBy('id', 'desc')->paginate($this->count, ['*'], 'not_unique_clients');*/ $clients = $clients->whereHas('deals', function ($query) { $query->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]); })->paginate($this->count, ['*'], 'not_unique_clients'); } else { /*$deals = $deals->orderBy('id', 'desc')->paginate($this->count, ['*'], 'all_clients');*/ $clients = $clients->paginate($this->count, ['*'], 'all_clients'); } return view( 'livewire.clients-table', [ 'clients' => $clients, 'statuses' => DealStatus::class ] ); } function getClients() { /*$clients = User::whereIn('id', function ($query) { });*/ $clients = false; //$clients = Client::ofAgent(); return $clients; } }