Skip to content

Commit c4f2a37

Browse files
committed
Add all_events parameter
1 parent 7a21aa0 commit c4f2a37

File tree

2 files changed

+35
-21
lines changed

2 files changed

+35
-21
lines changed

app/controllers/events_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ def index
33
@url = request.url
44
@upcoming_events = UpcomingEvent.group_by_prefecture
55
@pokemon_events = UpcomingEvent.group_by_keyword('ポケモン')
6+
all_events = params[:all_events] == 'true'
67

78
respond_to do |format|
89
format.html
910
format.json {
1011
# DojoMap: https://map.coderdojo.jp
11-
render json: UpcomingEvent.for_dojo_map
12+
render json: UpcomingEvent.for_dojo_map(all_events)
1213
}
1314
end
1415
end

app/models/upcoming_event.rb

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,48 @@ def group_by_keyword(keyword)
3535
where('event_title like(?)', "%#{keyword}%")
3636
end
3737

38-
def for_dojo_map
38+
def for_dojo_map(all_events = false)
3939
result = []
4040
list_of_dojo_and_events = eager_load(dojo_event_service: :dojo)
4141
.since(Time.zone.today)
4242
.merge(Dojo.default_order)
4343
.group_by { |event| event.dojo_event_service.dojo }
44-
44+
4545
list_of_dojo_and_events.each do |dojo, events|
46-
event = events.sort_by(&:event_at).first
47-
result << {
48-
id: dojo.id,
49-
name: dojo.name,
50-
url: dojo.url,
51-
event_id: event[:id],
52-
event_title: event[:event_title],
53-
event_date: event[:event_at],
54-
event_end_at: event[:event_end_at],
55-
event_url: event[:event_url],
56-
prefecture: dojo.prefecture.name,
57-
participants: event[:participants],
58-
event_update_at: event[:event_update_at],
59-
address: event[:address],
60-
place: event[:place],
61-
limit: event[:limit]
62-
}
46+
sorted_events = events.sort_by(&:event_at)
47+
if all_events
48+
sorted_events.each do |event|
49+
result << build_event_hash(dojo, event)
50+
end
51+
else
52+
event = sorted_events.first
53+
result << build_event_hash(dojo, event)
54+
end
6355
end
64-
56+
6557
result
6658
end
59+
60+
private
61+
62+
def build_event_hash(dojo, event)
63+
{
64+
id: dojo.id,
65+
name: dojo.name,
66+
url: dojo.url,
67+
event_id: event[:id],
68+
event_title: event[:event_title],
69+
event_date: event[:event_at],
70+
event_end_at: event[:event_end_at],
71+
event_url: event[:event_url],
72+
prefecture: dojo.prefecture.name,
73+
participants: event[:participants],
74+
event_update_at: event[:event_update_at],
75+
address: event[:address],
76+
place: event[:place],
77+
limit: event[:limit]
78+
}
79+
end
6780
end
6881

6982
def catalog

0 commit comments

Comments
 (0)