Skip to content

Commit 1c928eb

Browse files
authored
Merge pull request #1512 from coderdojo-japan/flatten-upcoming-events-api
Flatten UpcomingEvents API (in beta) for DojoMap
2 parents 3cd95d0 + 29dfa17 commit 1c928eb

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

app/controllers/events_controller.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ def index
66

77
respond_to do |format|
88
format.html
9-
format.json { render json: @upcoming_events }
9+
format.json {
10+
# DojoMap: https://map.coderdojo.jp
11+
render json: UpcomingEvent.for_dojo_map
12+
}
1013
end
1114
end
1215
end

app/models/upcoming_event.rb

+22
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,28 @@ def group_by_keyword(keyword)
3434
merge(Dojo.default_order).
3535
where('event_title like(?)', "%#{keyword}%")
3636
end
37+
38+
def for_dojo_map
39+
result = []
40+
list_of_dojo_and_events = eager_load(dojo_event_service: :dojo)
41+
.since(Time.zone.today)
42+
.merge(Dojo.default_order)
43+
.group_by { |event| event.dojo_event_service.dojo }
44+
45+
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_title: event[:event_title],
52+
event_date: event[:event_at],
53+
event_url: event[:event_url],
54+
}
55+
end
56+
57+
result
58+
end
3759
end
3860

3961
def catalog

0 commit comments

Comments
 (0)