diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 46c3cd475..a065d0985 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -6,7 +6,10 @@ def index respond_to do |format| format.html - format.json { render json: @upcoming_events } + format.json { + # DojoMap: https://map.coderdojo.jp + render json: UpcomingEvent.for_dojo_map + } end end end diff --git a/app/models/upcoming_event.rb b/app/models/upcoming_event.rb index 30f989f96..5656945b2 100644 --- a/app/models/upcoming_event.rb +++ b/app/models/upcoming_event.rb @@ -34,6 +34,28 @@ def group_by_keyword(keyword) merge(Dojo.default_order). where('event_title like(?)', "%#{keyword}%") end + + def for_dojo_map + result = [] + list_of_dojo_and_events = eager_load(dojo_event_service: :dojo) + .since(Time.zone.today) + .merge(Dojo.default_order) + .group_by { |event| event.dojo_event_service.dojo } + + list_of_dojo_and_events.each do |dojo, events| + event = events.sort_by(&:event_at).first + result << { + id: dojo.id, + name: dojo.name, + url: dojo.url, + event_title: event[:event_title], + event_date: event[:event_at], + event_url: event[:event_url], + } + end + + result + end end def catalog