Skip to content

Commit

Permalink
feat: adicionado filtro na pagina meus indicados
Browse files Browse the repository at this point in the history
  • Loading branch information
owalacesilva committed Jul 28, 2023
1 parent 023292b commit c3d9474
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 24 deletions.
4 changes: 3 additions & 1 deletion app/controllers/backoffice/tree/sponsored_controller.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
class Backoffice::Tree::SponsoredController < Backoffice::BackofficeController

def index
@users = current_user.sponsored.order(created_at: :desc)
@filters = filter_params('sponsored')
query = SponsoredQuery.call(relation: current_user, filters: @filters)
@users = query.order(created_at: :desc).page(params[:page])
end
end
31 changes: 31 additions & 0 deletions app/queries/sponsored_query.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
class SponsoredQuery < ApplicationQuery
attr_reader :relation, :users, :filters

def initialize(relation:, filters:)
@relation = relation
@filters = filters
end

def call
scope = relation.sponsored

apply_filter(scope, :status)
.yield_self { |scope| apply_filter(scope, :name) }
end

private

def apply_filter(scope, filter)
return scope if filters[filter].blank?

send("filter_by_#{filter}", scope, filters[filter])
end

def filter_by_status(scope, value)
scope.where(status: value)
end

def filter_by_name(scope, value)
scope.where(first_name: value)
end
end
38 changes: 38 additions & 0 deletions app/views/backoffice/tree/sponsored/_filter.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<div class="">
<div class="card mb-3">
<h6 class="card-header">
<%= fa_icon "filter fw" %><span>Filtro</span>
</h6>
<div class="card-body">
<%= form_tag backoffice_tree_sponsored_index_path, method: :get do -%>
<div class="row g-3">
<div class="col-lg-3">
<label for="username" class="form-label">Login</label>
<%= text_field_tag :username, @filters.username, class: 'form-control' %>
</div>
<div class="col-lg-3">
<label for="name" class="form-label">Nome</label>
<%= text_field_tag :name, @filters.name, class: 'form-control' %>
</div>
<div class="col-lg-3">
<label for="status" class="form-label">Situação</label>
<% statuses = human_attribute_enum('user', User.statuses, 'status') %>
<%= select_tag :status, options_for_select(statuses, @filters.status), { prompt: "-- Selecione um status --", class: 'form-control chosen-select' } %>
</div>
</div>
<div class="row g-3">
<div class="col">
<div class="row g-1 justify-content-end">
<div class="col-auto">
<%= submit_tag "Filtrar", class: "btn btn-success", data: { disable_with: 'Filtrando...' } %>
</div>
<div class="col-auto">
<%= link_to 'Limpar filtro', backoffice_tree_sponsored_index_path(clear_filter: true), class: 'btn btn-light btn-danger-hover', data: { disable_with: 'Limpando...' } %>
</div>
</div>
</div>
</div>
<%- end %>
</div>
</div>
</div>
23 changes: 1 addition & 22 deletions app/views/backoffice/tree/sponsored/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,7 @@
<%= fa_icon "calendar fw" %>
<span>Meus Diretos</span>
</div>
<div class="card mb-3">
<h6 class="card-header">
<%= fa_icon "filter fw" %><span>Filtro</span>
</h6>
<div class="card-body">
<div class="row">
<div class="col-lg-6">
<form>
<div class="row mb-3">
<label for="inputEmail3" class="col-sm-2 col-form-label">Procurar</label>
<div class="col-sm-6">
<input type="text" class="form-control" cname="name" />
</div>
</div>
</form>
</div>
<div class="col-lg-6 text-end">
<%= link_to "Exportar CSV", "#", class: "btn btn-primary" %>
</div>
</div>
</div>
</div>
<%= render 'filter' %>
<div class="card mb-3">
<div class="card-body">
<table class="table table-striped">
Expand Down
2 changes: 1 addition & 1 deletion config/initializers/kaminari_config.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Kaminari.configure do |config|
config.default_per_page = 3
config.default_per_page = 25
config.max_per_page = nil
config.window = 4
config.outer_window = 0
Expand Down

0 comments on commit c3d9474

Please sign in to comment.