From 3b52fec29656af4e6f4a1330580ea1ba85e1a4c0 Mon Sep 17 00:00:00 2001 From: Guilherme Capanema Date: Wed, 10 Jun 2020 08:31:02 -0300 Subject: [PATCH] =?UTF-8?q?Adicioan=20filtragem=20b=C3=A1sica=20no=20?= =?UTF-8?q?=C3=ADndice=20de=20associados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Collaborators/Associates/Index.php | 27 +++- resources/lang/pt-BR.json | 6 +- resources/lang/pt-BR/associate_categories.php | 1 + resources/views/layouts/app.blade.php | 3 + .../views/layouts/collaborators.blade.php | 2 +- .../collaborators/associates/index.blade.php | 121 ++++++++++++++++-- .../Collaborators/Associates/IndexTest.php | 50 ++++++++ 7 files changed, 191 insertions(+), 19 deletions(-) diff --git a/app/Http/Livewire/Collaborators/Associates/Index.php b/app/Http/Livewire/Collaborators/Associates/Index.php index e0f3ca7..8c7f1aa 100644 --- a/app/Http/Livewire/Collaborators/Associates/Index.php +++ b/app/Http/Livewire/Collaborators/Associates/Index.php @@ -16,7 +16,9 @@ class Index extends Component * @var array */ protected $updatesQueryString = [ - 'search' => ['except' => ''] + 'search' => ['except' => ''], + 'associate_category_id' => [], + 'gender' => [], ]; /** @var string */ @@ -31,9 +33,17 @@ class Index extends Component /** @var string */ public $search; + /** @var int */ + public $associate_category_id; + + /** @var string */ + public $gender; + public function mount() { $this->search = request()->query('search', $this->search); + $this->associate_category_id = request()->query('associate_category_id', $this->associate_category_id); + $this->gender = request()->query('gender', $this->gender); } public function updatingSearch() @@ -43,8 +53,17 @@ class Index extends Component public function render() { - return view('livewire.collaborators.associates.index', [ - 'associates' => Associate::with('category')->where('name', 'LIKE', '%' . $this->search . '%')->orderBy($this->orderColumn, $this->orderDirection)->paginate($this->perPage), - ]); + $associates = Associate::with('category') + ->where('name', 'LIKE', '%' . $this->search . '%') + ->orderBy($this->orderColumn, $this->orderDirection) + ->when($this->associate_category_id, function ($query, $associate_category_id) { + return $query->where('associate_category_id', $associate_category_id); + }) + ->when($this->gender, function ($query, $gender) { + return $query->where('profile->gender', $gender); + }) + ->paginate($this->perPage); + + return view('livewire.collaborators.associates.index', compact('associates')); } } diff --git a/resources/lang/pt-BR.json b/resources/lang/pt-BR.json index 138f48b..edc8876 100644 --- a/resources/lang/pt-BR.json +++ b/resources/lang/pt-BR.json @@ -1,7 +1,9 @@ { - "Search:": "Buscar:", + "Search": "Buscar", "Show": "Mostrar", "entries": "registros", "Save": "Salvar", - "Saved": "Salvo" + "Saved": "Salvo", + "Advanced": "Avançado", + "Advanced filters": "Filtros avançados" } diff --git a/resources/lang/pt-BR/associate_categories.php b/resources/lang/pt-BR/associate_categories.php index 5ac1664..5e5ec55 100644 --- a/resources/lang/pt-BR/associate_categories.php +++ b/resources/lang/pt-BR/associate_categories.php @@ -1,6 +1,7 @@ 'Categoria do associado', 'individual' => 'Associado Indivíduo', 'supporting-institution' => 'Associada Instituição Apoiadora', 'acting-institution' => 'Associada Instituição Atuante', diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 0053b22..735652c 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -103,4 +103,7 @@ + + @yield('modals') + @endsection diff --git a/resources/views/layouts/collaborators.blade.php b/resources/views/layouts/collaborators.blade.php index 8161fe8..07a9e27 100644 --- a/resources/views/layouts/collaborators.blade.php +++ b/resources/views/layouts/collaborators.blade.php @@ -13,7 +13,7 @@ {{ __('sidebar.associates.title') }} - + @svg('database', 'fill-current') diff --git a/resources/views/livewire/collaborators/associates/index.blade.php b/resources/views/livewire/collaborators/associates/index.blade.php index bf9ace3..78511d2 100644 --- a/resources/views/livewire/collaborators/associates/index.blade.php +++ b/resources/views/livewire/collaborators/associates/index.blade.php @@ -18,6 +18,28 @@
+
+ + + +
+ +
+ +
+ - -
@@ -135,3 +145,90 @@
+ +@section('modals') +
+
+ + + + +
+
+@endsection diff --git a/tests/Feature/Collaborators/Associates/IndexTest.php b/tests/Feature/Collaborators/Associates/IndexTest.php index dae2543..2f2cb71 100644 --- a/tests/Feature/Collaborators/Associates/IndexTest.php +++ b/tests/Feature/Collaborators/Associates/IndexTest.php @@ -57,4 +57,54 @@ class IndexTest extends TestCase ->assertDontSee('José da Silva') ->assertSee('Maria da Conceição'); } + + /** @test */ + public function index_is_filterable_by_associate_category_id() + { + $collaborator = factory(Collaborator::class)->create(); + $this->be($collaborator, 'collaborators'); + + factory(Associate::class)->create([ + 'name' => 'José da Silva', + 'associate_category_id' => 1, + ]); + factory(Associate::class)->create([ + 'name' => 'Maria da Conceição', + 'associate_category_id' => 2, + ]); + + Livewire::test('collaborators.associates.index') + ->assertSee('José da Silva') + ->assertSee('Maria da Conceição') + ->set('associate_category_id', 2) + ->assertDontSee('José da Silva') + ->assertSee('Maria da Conceição'); + } + + /** @test */ + public function index_is_filterable_by_gender() + { + $collaborator = factory(Collaborator::class)->create(); + $this->be($collaborator, 'collaborators'); + + factory(Associate::class)->create([ + 'name' => 'José da Silva', + 'profile' => [ + 'gender' => 'male', + ], + ]); + factory(Associate::class)->create([ + 'name' => 'Maria da Conceição', + 'profile' => [ + 'gender' => 'female', + ], + ]); + + Livewire::test('collaborators.associates.index') + ->assertSee('José da Silva') + ->assertSee('Maria da Conceição') + ->set('gender', 'female') + ->assertDontSee('José da Silva') + ->assertSee('Maria da Conceição'); + } }