add from_created_at filter

This commit is contained in:
Lisa Durand 2023-05-02 09:37:03 +02:00
parent 39f534b3d7
commit 21ed6abcad
4 changed files with 49 additions and 6 deletions

View file

@ -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'

View file

@ -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

View file

@ -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