diff --git a/app/Livewire/ClientsTable.php b/app/Livewire/ClientsTable.php index b21f5d6..6b34f59 100644 --- a/app/Livewire/ClientsTable.php +++ b/app/Livewire/ClientsTable.php @@ -19,8 +19,6 @@ class ClientsTable extends Component { - use WithPagination, WithoutUrlPagination; - public $status; public $count; public $mode;//short || full @@ -76,6 +74,15 @@ public function getDeals() if (array_key_exists('status', $this->filter)) { $deals->where('status', $this->filter['status']); } + + if (array_key_exists('complexes', $this->filter)) { + $complexes = []; + foreach ($this->filter['complexes'] as $selectedComplex) { + $complexes[] = $selectedComplex['id']; + } + $deals->whereIn('complex_id', $complexes); + } + if (!$deals) { return Client::where('id', 0); } @@ -115,11 +122,10 @@ function getClients() 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', diff --git a/app/Modules/Main/Http/Livewire/ClientSearchInputLivewire.php b/app/Modules/Main/Http/Livewire/ClientSearchInputLivewire.php index 97d2f57..80757af 100644 --- a/app/Modules/Main/Http/Livewire/ClientSearchInputLivewire.php +++ b/app/Modules/Main/Http/Livewire/ClientSearchInputLivewire.php @@ -9,9 +9,10 @@ class ClientSearchInputLivewire extends Component { public $filter = []; + public $complexes; public function mount() { - + $this->complexes = GetAvailableComplexes(); } public function setStatus($status) @@ -23,10 +24,37 @@ public function setStatus($status) $this->filter['status'] = $status; } - public function updated($propertyName) + public function toggleComplex($complexId) + { + if (!array_key_exists('complexes', $this->filter)) { + $this->filter['complexes'] = []; + } + $disabled = false; + foreach ($this->filter['complexes'] as $selectedKey=>$selectedComplex) { + if ($selectedComplex['id'] == $complexId) { + unset($this->filter['complexes'][$selectedKey]); + $disabled = true; + } + } + if (!$disabled) { + foreach ($this->complexes as $complex) { + if($complex['id'] == $complexId) { + $this->filter['complexes'][] = ['id' => $complexId, 'name' => $complex['name']]; + } + } + } + $this->filter['complexes'] = array_values($this->filter['complexes']); + if (!count($this->filter['complexes'])) { + unset($this->filter['complexes']); + } + + $this->updated(); + } + public function updated() { $this->dispatch('clientsTableFilterUpdated', filter: $this->filter); } + public function render() { return view('main::clients.livewire.search.input', [ diff --git a/app/Modules/Main/Views/clients/livewire/search/input.blade.php b/app/Modules/Main/Views/clients/livewire/search/input.blade.php index 4a68b06..527ec20 100644 --- a/app/Modules/Main/Views/clients/livewire/search/input.blade.php +++ b/app/Modules/Main/Views/clients/livewire/search/input.blade.php @@ -3,15 +3,52 @@ ?>