status = $status; $this->count = $count; $this->mode = $mode; } #[On('clientCreated')] public function getDeals() { $deals = false; $clients = false; $user = auth()->user(); 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); }); } elseif ($agent = Agent::where('user_id', $user->id)->first()) { $deals = Deal::where('agent_id', $agent->id); } if (!$deals) { return Client::where('id',0); } $deals = $deals->pluck('id'); $clients = Client::join('deal_clients', 'users.id', '=', 'deal_clients.client_id') ->whereIn('users.id', function ($query) use ($deals) { $query->select('client_id') ->from('deal_clients') ->whereIn('deal_id', $deals); }) ->orderBy('deal_clients.id', 'desc') ->with('deals'); ; $clients = $clients->select('users.*'); $clients = $clients->orderBy('name'); return $clients; } function getClients() { $clients = $this->getDeals(); if ($this->status && $this->status == DealStatus::UNIQUE) { $clients = $clients->whereHas('deals', function ($query) { $query->where('status', DealStatus::UNIQUE); })->paginate($this->count, ['*'], 'unique_clients'); } elseif ($this->status && $this->status == DealStatus::NOT_UNIQUE) { $clients = $clients->whereHas('deals', function ($query) { $query->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]); })->paginate($this->count, ['*'], 'not_unique_clients'); } else { $clients = $clients->paginate($this->count, ['*'], 'all_clients'); } return $clients; } public function render() { return view( 'livewire.clients-table', [ 'clients' => $this->getClients(), 'statuses' => DealStatus::class ] ); } }