lk.zachem.info/app/Modules/Main/Http/Livewire/ClientSearchInputLivewire.php

66 lines
1.8 KiB
PHP

<?php
namespace Modules\Main\Http\Livewire;
use Livewire\Component;
use Livewire\Attributes\On;
use Modules\Main\Models\Deal\DealStatus;
class ClientSearchInputLivewire extends Component
{
public $filter = [];
public $complexes;
public function mount()
{
$this->complexes = GetAvailableComplexes();
}
public function setStatus($status)
{
if (array_key_exists('status', $this->filter) && $this->filter['status'] === $status) {
unset($this->filter['status']);
return;
}
$this->filter['status'] = $status;
}
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', [
'statuses' => DealStatus::class
]);
}
}