osem-fcy/app/serializers/event_serializer.rb
2021-04-15 21:56:18 -07:00

64 lines
2 KiB
Ruby

# frozen_string_literal: true
# == Schema Information
#
# Table name: events
#
# id :bigint not null, primary key
# abstract :text
# comments_count :integer default(0), not null
# committee_review :text
# description :text
# guid :string not null
# is_highlight :boolean default(FALSE)
# language :string
# max_attendees :integer
# progress :string default("new"), not null
# proposal_additional_speakers :text
# public :boolean default(TRUE)
# require_registration :boolean
# start_time :datetime
# state :string default("new"), not null
# submission_text :text
# subtitle :string
# title :string not null
# week :integer
# created_at :datetime
# updated_at :datetime
# difficulty_level_id :integer
# event_type_id :integer
# program_id :integer
# room_id :integer
# track_id :integer
#
class EventSerializer < ActiveModel::Serializer
include ActionView::Helpers::TextHelper
attributes :guid, :title, :length, :scheduled_date, :language, :abstract, :speaker_ids, :type, :room, :track
def scheduled_date
t = object.time
t.blank? ? '' : %( #{I18n.l t, format: :short}#{t.formatted_offset(false)} )
end
def speaker_ids
speakers = object.event_users.select { |i| i.event_role == 'speaker' }
speakers.map { |i| i.user.id }
end
def type
object.event_type.try(:title)
end
def room
object.room.try(:guid)
end
def track
object.track.try(:guid)
end
def length
object.event_type.try(:length) || object.event_type.program.schedule_interval
end
end