2013-07-08 10:07:12 +02:00
|
|
|
class EventSerializer < ActiveModel::Serializer
|
|
|
|
|
include ActionView::Helpers::TextHelper
|
|
|
|
|
|
2016-07-08 13:28:02 +02:00
|
|
|
attributes :guid, :title, :length, :scheduled_date, :language, :abstract, :speaker_ids, :type, :scheduled_room, :track
|
2013-07-08 10:07:12 +02:00
|
|
|
|
2016-07-08 13:28:02 +02:00
|
|
|
def scheduled_date
|
|
|
|
|
t = object.scheduled_start_time
|
|
|
|
|
t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} )
|
2013-07-08 10:07:12 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def speaker_ids
|
2014-06-24 12:14:53 +03:00
|
|
|
speakers = object.event_users.select { |i| i.event_role == 'speaker' }
|
|
|
|
|
speakers.map { |i| i.user.id }
|
2013-07-08 10:07:12 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def type
|
|
|
|
|
object.event_type.try(:title)
|
|
|
|
|
end
|
|
|
|
|
|
2016-07-08 13:28:02 +02:00
|
|
|
def scheduled_room
|
|
|
|
|
object.scheduled_room.try(:guid)
|
2013-07-08 10:07:12 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def track
|
|
|
|
|
object.track.try(:guid)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def abstract
|
|
|
|
|
# This should never happen
|
|
|
|
|
if object.abstract.blank?
|
|
|
|
|
nil
|
|
|
|
|
else
|
2014-06-24 12:14:53 +03:00
|
|
|
simple_format(object.abstract).gsub('\n', '')
|
2013-07-08 10:07:12 +02:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# FIXME: duplicated logic from Event#as_json
|
|
|
|
|
def length
|
2016-07-18 11:45:59 +02:00
|
|
|
object.event_type.try(:length) || EventType::LENGTH_STEP
|
2013-07-08 10:07:12 +02:00
|
|
|
end
|
|
|
|
|
end
|