Skip to content

Commit 6698de2

Browse files
committed
Fix in date_range_helper.rb and application_controller.rb for invalid filter date_range param
1 parent edc66cd commit 6698de2

2 files changed

Lines changed: 33 additions & 19 deletions

File tree

app/controllers/application_controller.rb

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,34 @@ def current_organization
2424
return @current_organization if instance_variable_defined? :@current_organization
2525

2626
@current_organization = if !current_role
27-
nil
28-
elsif current_role.resource.is_a?(Organization)
29-
current_role.resource
30-
else
31-
Organization.find_by(short_name: params[:organization_name])
32-
end
27+
nil
28+
elsif current_role.resource.is_a?(Organization)
29+
current_role.resource
30+
else
31+
Organization.find_by(short_name: params[:organization_name])
32+
end
3333
end
3434
helper_method :current_organization
3535

3636
def current_partner
3737
return @current_partner if instance_variable_defined? :@current_partner
3838

3939
@current_partner = if !current_role || current_role.name.to_sym != Role::PARTNER
40-
nil
41-
else
42-
current_role.resource
43-
end
40+
nil
41+
else
42+
current_role.resource
43+
end
4444
end
4545
helper_method :current_partner
4646

4747
def current_role
4848
return @role if instance_variable_defined? :@role
4949

5050
@role = if !current_user
51-
nil
52-
else
53-
Role.find_by(id: session[:current_role]) || UsersRole.current_role_for(current_user)
54-
end
51+
nil
52+
else
53+
Role.find_by(id: session[:current_role]) || UsersRole.current_role_for(current_user)
54+
end
5555
end
5656

5757
def dashboard_path_from_current_role
@@ -142,6 +142,10 @@ def setup_date_range_picker
142142
@selected_date_interval = helpers.selected_interval
143143
@selected_date_range = helpers.selected_interval.map { |d| d.to_fs(:long) }.join(" - ")
144144
@selected_date_range_label = helpers.date_range_label
145+
146+
if helpers.date_range_params_invalid?
147+
flash.now[:error] = "The date range you supplied was invalid, so we used a default range instead."
148+
end
145149
end
146150

147151
def configure_permitted_parameters

app/helpers/date_range_helper.rb

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,18 @@ def default_date
3333
"#{start_date.strftime("%B %d, %Y")} - #{end_date.strftime("%B %d, %Y")}"
3434
end
3535

36+
def parse_date_range(date_range_string)
37+
parts = date_range_string.to_s.split(" - ")
38+
return nil unless parts.size == 2
39+
40+
parts.map { |d| Date.strptime(d.strip, "%B %d, %Y") }
41+
rescue ArgumentError => e
42+
Rails.logger.warn("Invalid date range '#{date_range_string}': #{e.message}")
43+
nil
44+
end
45+
3646
def selected_interval
37-
date_range_params.split(" - ").map do |d|
38-
Date.strptime(d, "%B %d, %Y")
39-
rescue
40-
raise "Invalid date: #{d} in #{date_range_params}"
41-
end
47+
parse_date_range(date_range_params) || parse_date_range(default_date)
4248
end
4349

4450
def selected_range
@@ -56,4 +62,8 @@ def selected_range_described
5662
"during the period #{start_date.to_fs(:short)} to #{end_date.to_fs(:short)}"
5763
end
5864
end
65+
66+
def date_range_params_invalid?
67+
parse_date_range(date_range_params).nil?
68+
end
5969
end

0 commit comments

Comments
 (0)