add from_created_at filter
This commit is contained in:
parent
39f534b3d7
commit
21ed6abcad
4 changed files with 49 additions and 6 deletions
|
@ -11,6 +11,11 @@
|
|||
= b.check_box(checked: filter.states_filtered?(b.value))
|
||||
= b.label(class: 'fr-label') { t b.text, scope: 'activerecord.attributes.procedure.aasm_state' }
|
||||
|
||||
.fr-col-12.fr-col-md-3
|
||||
.fr-input-group
|
||||
= f.label 'from_created_at_date', 'Dossier créé depuis le', class: 'fr-label'
|
||||
= f.date_field 'from_created_at_date', value: @filter.from_created_at_date, class: 'fr-input'
|
||||
|
||||
.fr-mb-2w
|
||||
= f.submit 'Appliquer les filtres', class: 'fr-btn fr-btn--sm'
|
||||
= link_to 'Réinitialiser les filtres', dossiers_path(statut: @statut), class: 'fr-btn fr-btn--sm fr-btn--tertiary-no-outline'
|
||||
|
|
|
@ -51,14 +51,17 @@ module Users
|
|||
@first_brouillon_recently_updated = current_user.dossiers.visible_by_user.brouillons_recently_updated.first
|
||||
|
||||
@filter = DossiersFilter.new(current_user, params)
|
||||
if params[:states]
|
||||
@dossiers_result = filter_procedures(@filter, current_user.dossiers.visible_by_user)
|
||||
if @filter.filter_params.present?
|
||||
@dossiers_result = filter_procedures(@filter, @dossiers)
|
||||
@dossiers = @dossiers_result.page(page)
|
||||
end
|
||||
end
|
||||
|
||||
def filter_procedures(filter, dossiers)
|
||||
dossiers.where(state: filter.states) if filter.states.present?
|
||||
dossiers_result = dossiers
|
||||
dossiers_result = dossiers_result.where(state: filter.states) if filter.states.present?
|
||||
dossiers_result = dossiers_result.where('created_at >= ?', filter.from_created_at_date) if filter.from_created_at_date.present?
|
||||
dossiers_result
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -5,7 +5,11 @@ class DossiersFilter
|
|||
|
||||
def initialize(user, params)
|
||||
@user = user
|
||||
@params = params.permit(:page, :from_publication_date, states: [])
|
||||
@params = params.permit(:page, :from_created_at_date, states: [])
|
||||
end
|
||||
|
||||
def filter_params
|
||||
params[:from_created_at_date].presence || params[:states].presence
|
||||
end
|
||||
|
||||
def states
|
||||
|
@ -15,4 +19,12 @@ class DossiersFilter
|
|||
def states_filtered?(state)
|
||||
states&.include?(state)
|
||||
end
|
||||
|
||||
def from_created_at_date
|
||||
return if params[:from_created_at_date].blank?
|
||||
|
||||
Date.parse(params[:from_created_at_date])
|
||||
rescue Date::Error
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue