diff --git a/app/Livewire/ClientsTable.php b/app/Livewire/ClientsTable.php index eca8c50..b21f5d6 100644 --- a/app/Livewire/ClientsTable.php +++ b/app/Livewire/ClientsTable.php @@ -25,6 +25,8 @@ class ClientsTable extends Component public $count; public $mode;//short || full private $filter = []; + public $clientsCount; + public $currentPage; public function mount($status = null, $count = 10, $mode = 'full') { @@ -34,8 +36,13 @@ public function mount($status = null, $count = 10, $mode = 'full') $this->filter = []; } + public function goToPage($page) { + $this->currentPage = $page; + } + #[On('clientsTableFilterUpdated')] - public function appendFilter($filter) { + public function appendFilter($filter) + { if ($filter) { $this->filter = $filter; } else { @@ -50,32 +57,27 @@ public function getDeals() $clients = false; $user = auth()->user(); - if($cityManager = CityManager::where('user_id', auth()->id())->first()) { + if ($cityManager = CityManager::where('user_id', auth()->id())->first()) { $companies = $cityManager->city->companies->pluck('id'); - $deals = Deal::whereIn('agent_id', function ($query) use ($companies) - { + $deals = Deal::whereIn('agent_id', function ($query) use ($companies) { $query->select('id'); $query->from('agents'); $query->whereIn('company_id', $companies); }); - } - else if ($company = AdminCompanyOfUser()) { - $deals = Deal::whereIn('agent_id', function ($query) use ($company) - { + } else if ($company = AdminCompanyOfUser()) { + $deals = Deal::whereIn('agent_id', function ($query) use ($company) { $query->select('id'); $query->from('agents'); $query->where('company_id', $company->id); }); - } - elseif ($agent = Agent::where('user_id', $user->id)->first()) - { + } elseif ($agent = Agent::where('user_id', $user->id)->first()) { $deals = Deal::where('agent_id', $agent->id); } if (array_key_exists('status', $this->filter)) { $deals->where('status', $this->filter['status']); } if (!$deals) { - return Client::where('id',0); + return Client::where('id', 0); } return $deals; } @@ -84,15 +86,13 @@ function getClients() { $deals = $this->getDeals(); $clients = Client::join('deal_clients', 'users.id', '=', 'deal_clients.client_id') - ->whereIn('users.id', function ($query) use ($deals) - { + ->whereIn('users.id', function ($query) use ($deals) { $query->select('client_id') ->from('deal_clients') ->whereIn('deal_id', $deals->get()->pluck('id')); }) ->orderBy('deal_clients.id', 'desc') ->with('deals'); - ; $clients = $clients->select('users.*'); $clients = $clients->orderBy('name'); @@ -100,33 +100,31 @@ function getClients() $clients->whereFullText(['name', 'phone', 'email'], $this->filter['search']); } - if (array_key_exists('status', $this->filter) && $this->status == DealStatus::UNIQUE) - { - $clients = $clients->whereHas('deals', function ($query) - { + if (array_key_exists('status', $this->filter) && $this->status == DealStatus::UNIQUE) { + $clients = $clients->whereHas('deals', function ($query) { $query->where('status', DealStatus::UNIQUE); - })->paginate($this->count, ['*'], 'clients'); - } - elseif (array_key_exists('status', $this->filter) && $this->status == DealStatus::NOT_UNIQUE) - { - $clients = $clients->whereHas('deals', function ($query) - { + }); + } elseif (array_key_exists('status', $this->filter) && $this->status == DealStatus::NOT_UNIQUE) { + $clients = $clients->whereHas('deals', function ($query) { $query->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]); - })->paginate($this->count, ['*'], 'clients'); - } - else - { - $clients = $clients->paginate($this->count, ['*'], 'clients'); + }); } + //$clients = $clients->skip($this->currentPage)->take(10)->get(); return $clients; } public function render() { - + $clients = $this->getClients(); + + if ($this->clientsCount != $clients->count()) { + $this->clientsCount = $clients->count(); + $this->currentPage = 1; + } + $clients = $clients->skip(($this->currentPage - 1) * $this->count)->take($this->count)->get(); return view( 'livewire.clients-table', [ - 'clients' => $this->getClients(), + 'clients' => $clients, 'statuses' => DealStatus::class ] ); diff --git a/resources/views/livewire/clients-table.blade.php b/resources/views/livewire/clients-table.blade.php index 80d05f8..a6bdfcd 100644 --- a/resources/views/livewire/clients-table.blade.php +++ b/resources/views/livewire/clients-table.blade.php @@ -1,7 +1,9 @@